用于连接元组中的值的 Pig 脚本

Posted

技术标签:

【中文标题】用于连接元组中的值的 Pig 脚本【英文标题】:Pig script to concatenate the values in the tuples 【发布时间】:2017-10-11 20:40:56 【问题描述】:

输入:

(11111111,(A,MARK,APPLE,ABC1,11111111),(B,PAUL,AMAZON,ABC2,11111111),(C,TIM,FIVN,ABC3,11111111),(D,LIN,MULESFT,ABC4,11111111),(E,YEP,UHG,ABC5,11111111),(F,QIN,ATT,ABC6,11111111))
(22222222,(A,MARK,APPLE,ABC6,22222222),(B,MARK,AMAZON,ABC7,22222222),(C,MARK,PQE,ABC8,22222222),(D,MARK,AMB,ABC9,22222222),(E,MARK,YZQ,ABC19,22222222),(F,MARK,PQR,,22222222))

我已经用上面的键对数据进行了分组。我应该通过连接元组的所有值(包括空值)来生成输出,如下所示:

输出:

(1111111,A^B^C^D^E^F,MARK^PAUL^TIM^LIN^YEP^QIN,APPLE^AMAZON^FIVN^MULESFT^UHG^ATT,ABC1^ABC2^ABC3^ABC4^ABC5^^ABC6)
(2222222,A^B^^D^E^G,TIM^AIN^TIM^BIN^CIN^DIN^RIN,APPLE^AMAZON^PQE^AMB^YZQ^RIN,ABC6^ABC7^ABC8^ABC9^ABC19^^)

有人可以帮帮我吗?

【问题讨论】:

【参考方案1】:

分享一个可能有帮助的代码 sn-p,努力实现预期的输出。

输入:

1,A
1,B
1,C
2,D
2,E
2,F

输出:

(1,C^B^A)
(2,F^E^D)

猪片段:

data1 = load '/Users/muralirao/learning/pig/a.csv' using PigStorage(',') as (id:int, name:chararray);
req_data = FOREACH (GROUP data1 BY id)  
    names = data1.name;
    GENERATE group AS id, BagToString(names,'^');  
;

DUMP req_data;

【讨论】:

如果有帮助,您可以考虑接受这个作为答案。

以上是关于用于连接元组中的值的 Pig 脚本的主要内容,如果未能解决你的问题,请参考以下文章

PIG 对元组中的对应元素求和

在 Pig 中对元组中的所有字段应用 TRIM()

替换 Pig 元组中字段的值

apache pig Java UDF - 更改属性中的值似乎并没有坚持

将键值元组包转换为 Apache Pig 中的映射

通过映射匹配元组中的值