我有:
a b a c a d
a b
a c
a d
我想提出:
a, {(b),(c),(d)}
通过使用 GROUP 结果:
GROUP
a, {(a,b),(a,c),(a,d)}
我该如何处理包中的第一个字段?谢谢
iswrvxsc1#
在中没有这样做的选项 GROUP . 你必须用一个简单的方式把那一栏投影出来 FOREACH .
FOREACH
-- DESCRIBE A ;-- A: {c1: chararray, c2: chararray}-- DUMP A ;-- a b-- a c-- a dB = GROUP A BY c1 ;C = FOREACH B GENERATE group AS c1, A.c2 AS grpd_c2 ;
-- 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 ;
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) 相反
B.c2
A.c2
c2
c1
c3
A.(c2, c3)
hmmo2u0o2#
b=a组c1;如果您有更多字段,它将如下所示:c=每个b生成的组为c1,a.(c2,…);
2条答案
按热度按时间iswrvxsc1#
在中没有这样做的选项
GROUP
. 你必须用一个简单的方式把那一栏投影出来FOREACH
.在我必须这样做的情况下,为了简洁起见,我通常使用这种方式:
(同时,这种方式有助于提醒我不要使用
B.c2
)关键是
A.c2
它返回一个只有c2
从原来的袋子里拿出来。例如,如果您有3个字段(c1
,c2
,c3
)你会用A.(c2, c3)
相反hmmo2u0o2#
b=a组c1;
如果您有更多字段,它将如下所示:
c=每个b生成的组为c1,a.(c2,…);