如何按猪拉丁区域分组结果?

时间:2017-11-17 17:12:09

标签: hadoop dataset bigdata apache-pig

我是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)的命令/指令是什么?

2 个答案:

答案 0 :(得分:1)

使用group代替data.region

RES = foreach split_region GENERATE SUM(data.score), group;

请参阅here了解来源。使用GROUP运算符时 第一个字段命名为" group" (不要将其与GROUP运算符混淆),并且与组密钥的类型相同。

答案 1 :(得分:0)

组操作符用于将具有相似键的所有记录放入同一个包中。这有助于我们对列进行聚合。