在猪的多个柱子上区别

时间:2014-06-30 09:37:10

标签: apache-pig

我有一个文件

 (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)

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 ;