对猪

2014-06-30 47 views
-1

我有一个文件的多列鲜明对猪

(1,1,100) 
    (1,1,200) 
    (1,2,300) 

现在我想的不同被分为两个栏应用,并希望可以将输出为

我这样做

集团在所有其他列上,将感兴趣的列项目放入一个包中,然后使用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

在这里你走这应该给你所需要的输出 -

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); 
} 
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 ;