でキーが一致するが、私は以下のようにサンプルデータを持っているときに、特定の列を合計する方法: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
PIGにそれを格納した後、私は以下のような出力が必要になります。
O/P:
(A,{(p,10)})
(B,{(q,40),(p,30)})
(C,{(t,60)},(q,20))
私たちは、IDをドロップすることができます特定のコードのキーに一致するすべての値の合計を加算する出力が必要です。上記の例では、コードB-qの場合、20が2回であるため、追加されてq、40になりました。
以下は、正確な出力を得ることができ、私のコードではなく、次のとおりです。
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)})
私がさらに進行することはできませんよ、ヘルプははるかに高く評価されます。
おかげで、 Rohith
最終出力を共有することはできますか? –
これは最終的な出力です: 'key'が同じ場合は、 'value'フィールドを追加する必要があります。 (A、{(P、10)}) (B、{(Q 40)、(P、30)}) (C、{(T、60)}、(Q、20) ) –
これは最終的な出力です: 'key'が同じ場合は、 'value'フィールドを追加する必要があります。 例:コードBの場合:(q、20)が2回繰り返されるため、追加する必要があります。結果は(q、40)にする必要があります。 (A、{(P、10)}) (B、{(Q:キーが同じである場合にのみ... 私はこの出力を得るまで得ることができた上記のコードのために今のところ20)、(P、30)、(Q、20)}) (C、{(Q 20)、(T、60)}) 私は以下のように、最終的な出力を必要とする: ( 、{(P、10)}) (B、{(Q 40)、(P、30)}) (C、{(T、60)}、(Q、20)) –