GROUP BY没有钥匙在结果袋中

时间:2013-09-20 20:10:18

标签: apache-pig

我有:

a b 
a c 
a d 

我想生成:

a, {(b),(c),(d)} 

使用GROUP执行此操作会导致:

a, {(a,b),(a,c),(a,d)}

如何摆脱包中的第一个字段?

感谢。

2 个答案:

答案 0 :(得分:3)

GROUP中无法执行此操作。您必须在FOREACH

中投放该列
-- DESCRIBE A ;
-- A: {c1: chararray, c2: chararray}
-- DUMP A ;
-- a b
-- a c
-- a d

B = GROUP A BY c1 ;
C = FOREACH B GENERATE group AS c1, A.c2 AS grpd_c2 ;

在我必须这样做的情况下,我通常使用这种方式来简洁:

D = FOREACH (GROUP A BY c1)
    GENERATE group AS c1, A.c2 AS grpd_c2 ;

(另外,这种方式有助于提醒我使用B.c2

密钥是A.c2,它会返回一个只包含原始包中c2列的包。例如,如果您有3个字段(c1c2c3),则会使用A.(c2, c3)代替。

答案 1 :(得分:1)

B = GROUP A BY c1;

如果你有更多字段,它将是这样的:

C = FOREACH B GENERATE组AS c1,A。(c2,....);

相关问题