我有一个文件
(1,1,100)
(1,1,200)
(1,2,300)
现在我希望将distinct应用于两列,并希望输出为
我做了这个
在所有其他列上进行分组,将感兴趣的列投影到一个包中,然后使用FLATTEN将它们再次展开:
A_unique =
FOREACH (GROUP A BY id3) {
b = A.(id1,id2);
s = DISTINCT b;
GENERATE FLATTEN(s);
};
DUMP A_unique;
输出结果为
(1,1)
(1,1)
(1,2)
我原以为
(1,1)
(1,2)
答案 0 :(得分:0)
在这里你应该给你想要的输出 -
a = load 'sample1.txt' using PigStorage(',') as (id1:int, id2:int, id3:int);
b = group a by (id1, id2);
c = foreach b {
first_e = limit a.id3 1;
generate flatten(group) as (id1, id2);
}
答案 1 :(得分:0)
下面的代码会生成所需的结果。
a = load '$dir/data' using PigStorage(',') as (d1:int,d2:int,d3:int);
b= group a all;
c= foreach b {
d = a.(d1,d2);
e = DISTINCT d;
generate FLATTEN(e);
}
dump c ;
〜