分组方式,结果包中没有密钥

snvhrwxg  于 2021-08-20  发布在  Pig
关注(0)|答案(2)|浏览(497)

我有:

a b 
a c 
a d

我想提出:

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

通过使用 GROUP 结果:

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

我该如何处理包中的第一个字段?
谢谢

iswrvxsc

iswrvxsc1#

在中没有这样做的选项 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) 相反

hmmo2u0o

hmmo2u0o2#

b=a组c1;
如果您有更多字段,它将如下所示:
c=每个b生成的组为c1,a.(c2,…);

相关问题