我的猪脚本需要一些帮助。我有 2 个 csv 文件,我想用一个共同的 id 在它们之间进行连接。
customer.csv :
1 ; nom1 ; prenom1
2 ; nom2 ; prenom2
3 ; nom3 ; prenom3
child.csv
1 ; enfant_1_1
2 ; enfant_1_2
3 ; enfant_1_3
1 ; enfant_2_1
1 ; enfant_3_1
因此,一个客户可以有多个孩子,但一个孩子只能有一个“客户”。
我想创建这个文件:
1 ; nom1 ; prenom1 ; enfant_1_1 ; enfant_2_1 ; enfant_3_1
2 ; nom2 ; prenom2 ; enfant_1_2
3 ; nom3 ; prenom3 ; enfant_1_3
这是我的方法:
首先我尝试确实有:
1 ; enfant_1_1 ; enfant_2_1 ; enfant_3_1
2 ; enfant_1_2
3 ; enfant_1_3
之后我将使用custome.csv 加入
告诉我你认为有一个最简单的方法:)
这是我的脚本:
donnees_Enfants = LOAD '/user/cloudera/Jeux/mini_jeu2.csv' USING PigStorage(';')
AS (id_parent:int,nom_enfant:chararray);
group_enfants = GROUP donnees_Enfants BY id_parent;
enfant_uneLigne = foreach group_enfants generate group, donnees_Enfants.nom_enfant;
grunt> echantillon = LIMIT enfant_uneLigne 50;
grunt> DUMP echantillon;
使用 DESCRIBE : group_enfants: {group: int,donnees_Enfants: {(id_parent: int,nom_enfant: chararray)}} enfant_uneLigne: {group: int,{(nom_enfant: chararray)}}
结果 :
(1,{( enfant_2_1 ),( enfant_1_1 ),( enfant_3_1 )})
(2,{( enfant_2_2 )})
(3,{( enfant_2_3 )})
我试图压平“enfant_1_2”......但结果是每个孩子都有一个 lign......我在玩元组和袋子时遇到了一些困难,你能帮帮我吗?
提前致谢,
编辑:我找到了解决我的问题的方法,更多^^见下文
安吉利克