我有:
a b
a c
a d
我想生成:
a, {(b),(c),(d)}
使用GROUP
执行此操作会导致:
a, {(a,b),(a,c),(a,d)}
如何摆脱包中的第一个字段?
感谢。
答案 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个字段(c1
,c2
,c3
),则会使用A.(c2, c3)
代替。
答案 1 :(得分:1)
B = GROUP A BY c1;
如果你有更多字段,它将是这样的:
C = FOREACH B GENERATE组AS c1,A。(c2,....);