2017-10-11 14 views
0

Entrée:scénario Pig pour concaténer les valeurs dans les tuples

(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)})

J'ai regroupé les données avec la clé comme ci-dessus. Je générer la sortie en enchaînant toutes les valeurs du tuple dont nulls comme suit:

Sortie:

(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^^)

Peut quelqu'un s'il vous plaît me aider?

Répondre

0

Partage d'un extrait de code qui peut aider, travailler sur ceci pour atteindre la sortie attendue.

Entrée:

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

Sortie:

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

Pig Snippet:

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; 
+0

Merci beaucoup Murali. Ça a marché. – satya

+0

vous pouvez penser à accepter cela comme réponse si cela a aidé. –