如何用pig拉丁语将结果按区域分组?

iyr7buue  于 2021-06-01  发布在  Hadoop
关注(0)|答案(2)|浏览(344)

我是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) 相反呢?

h43kikqp

h43kikqp1#

组运算符用于将具有相似密钥的所有记录放入同一个包中。这有助于我们对列执行聚合。

jbose2ul

jbose2ul2#

使用 group 而不是 data.region ```
RES = foreach split_region GENERATE SUM(data.score), group;

请参阅此处了解来源。使用group操作符时,第一个字段名为“group”(不要将其与group操作符混淆),并且与group键的类型相同。

相关问题