0

我有:

a b 
a c 
a d 

我想生成:

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

通过使用以下GROUP结果来执行此操作:

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

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

谢谢。

4

2 回答 2

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)

于 2013-09-20T20:42:15.137 回答
1

B = C1 组 A ;

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

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

于 2017-11-12T20:33:27.133 回答