j'ai données d'échantillon comme ci-dessous:Comment résumer la colonne spécifique lorsque les matchs clés PIG
(id,code,key,value)
1,A,p,10
2,B,q,20
3,B,p,30
3,B,q,20
3,C,t,60
3,C,q,20
Après le stockage dans PIG, i besoin d'une sortie comme ci-dessous:
O/P:
(A,{(p,10)})
(B,{(q,40),(p,30)})
(C,{(t,60)},(q,20))
Nous pouvons laisser tomber id , et besoin de sortie qui ajoute la somme de toutes les valeurs qui correspondent à la clé pour le code spécifique. dans l'exemple ci-dessus, nous pouvons voir pour le code B- q, 20 est deux fois, donc ajouté et est devenu q, 40.
ci-dessous est mon code, mais pas en mesure d'obtenir la sortie exacte:
Lo = load 'pivot.txt' using PigStorage (',') as (id:chararray, code:chararray, key:chararray, value:int);
Aa = group L by (code);
Bb = foreach Aa {AUX = foreach Lo generate $0,$2,$3;generate group, AUX;}`
dump Bb:
(A,{(1,p,10)})
(B,{(3,q,20),(3,p,30),(2,q,20)})
(C,{(3,t,60),(3,q,20)})
Je ne suis pas en mesure d'aller plus loin, l'aide est très appréciée.
Merci, Rohith
pouvez-vous partager la sortie finale requise? –
Ceci est la sortie finale: il faut ajouter le champ 'value' si 'key' est le même. (A, {(p, 10)}) (B, {(q, 40), (p, 30)}) (C, {(t, 60)}, (q, 20) –
Ceci est la sortie finale: il faut ajouter le champ 'value' si 'key' est le même. Exemple: pour le code B: (q, 20) se répète deux fois, il faut donc l'ajouter et le résultat devrait être (q, 40). Seulement si la clé est la même ... A partir de maintenant pour le code ci-dessus, je suis en mesure d'obtenir seulement jusqu'à obtenir cette sortie: (A, {(p, 10)}) (B, {(q, 20), (p, 30), (q, 20)}) (C, {(q, 20), (t, 60)}) Mais je besoin d'une sortie finale comme suit: (A , {(p, 10)}) (B, {(q, 40), (p, 30)}) (C, {(t, 60)}, (q, 20)) –