我是Hadoop PIG的新手,我有一个如下所示的数据集:
region_id region participation score
1 SSA YES 10
1 SSA NO 22
2 MONTPELIER YES 15
....
我想计算每个地区的得分总和。我正在寻找的最终展示是:
区域 - 分数,例如:
SSA - 32
我加载了我的数据:
data = load '/user/cloudera/datapi/pigdata.csv' using PigStorage (',') AS
(id:int, region:chararray, participation:chararray, score:int);
然后按地区对数据进行分组:
split_region = GROUP data by region;
最后:
RES= foreach split_region GENERATE SUM(data.score), data.region;
RES 变量包含每个区域的得分总和,但它会显示该区域的所有匹配项,如下所示:
(32 , {SSA,SSA})
缺少显示(32, SSA)
的命令/指令是什么?
答案 0 :(得分:1)
使用group
代替data.region
RES = foreach split_region GENERATE SUM(data.score), group;
请参阅here了解来源。使用GROUP运算符时 第一个字段命名为" group" (不要将其与GROUP运算符混淆),并且与组密钥的类型相同。
答案 1 :(得分:0)
组操作符用于将具有相似键的所有记录放入同一个包中。这有助于我们对列进行聚合。