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

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

我有:

  1. a b
  2. a c
  3. a d

我想提出:

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

通过使用 GROUP 结果:

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

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

iswrvxsc

iswrvxsc1#

在中没有这样做的选项 GROUP . 你必须用一个简单的方式把那一栏投影出来 FOREACH .

  1. -- DESCRIBE A ;
  2. -- A: {c1: chararray, c2: chararray}
  3. -- DUMP A ;
  4. -- a b
  5. -- a c
  6. -- a d
  7. B = GROUP A BY c1 ;
  8. C = FOREACH B GENERATE group AS c1, A.c2 AS grpd_c2 ;

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

  1. D = FOREACH (GROUP A BY c1)
  2. 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,…);

相关问题