gpt4 book ai didi

hadoop - 如何在 PIG 中的键匹配时对特定列求和

转载 作者:可可西里 更新时间:2023-11-01 14:30:22 27 4
gpt4 key购买 nike

我有如下示例数据:

(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 是两次,因此添加并成为 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)})

我无法继续进行,非常感谢您的帮助。

谢谢,罗氏

最佳答案

pig 脚本:

input_data = LOAD 'input.csv' USING PigStorage(',') AS (id:int,code:chararray,key:chararray,value:int);
req_stats = FOREACH(GROUP input_data BY (code,key)) GENERATE FLATTEN(group) AS (code,key), SUM(input_data.value) AS value;
req_stats_fmt = FOREACH(GROUP req_stats BY code) GENERATE group AS code, req_stats.(key,value);
DUMP req_stats_fmt;

输入:

1,A,p,10
2,B,q,20
3,B,p,30
3,B,q,20
3,C,t,60
3,C,q,20

输出:DUMP req_stats_fmt

(A,{(p,10)})
(B,{(q,40),(p,30)})
(C,{(t,60),(q,20)})

关于hadoop - 如何在 PIG 中的键匹配时对特定列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44956557/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com