如何用拉丁猪按地区分组结果?
How to group result by region with pig latin?
我是 Hadoop PIG 的新手,我有一个如下所示的数据集:
region_id region participation score
1 SSA YES 10
1 SSA NO 22
2 MONTPELIER YES 15
....
我想计算每个地区的分数总和。我正在寻找的最终显示是:
REGION - SCORE,例如:
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})
缺少什么 command/instruction 来显示 (32, SSA)
?
使用group
代替data.region
RES = foreach split_region GENERATE SUM(data.score), group;
有关来源,请参阅 here。当您使用 GROUP 运算符时,
第一个字段名为 "group"(不要将其与 GROUP 运算符混淆)并且与组键的类型相同。
Group算子用于将所有key相似的记录放入同一个包中。这有助于我们对列执行聚合。
我是 Hadoop PIG 的新手,我有一个如下所示的数据集:
region_id region participation score
1 SSA YES 10
1 SSA NO 22
2 MONTPELIER YES 15
....
我想计算每个地区的分数总和。我正在寻找的最终显示是:
REGION - SCORE,例如:
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})
缺少什么 command/instruction 来显示 (32, SSA)
?
使用group
代替data.region
RES = foreach split_region GENERATE SUM(data.score), group;
有关来源,请参阅 here。当您使用 GROUP 运算符时, 第一个字段名为 "group"(不要将其与 GROUP 运算符混淆)并且与组键的类型相同。
Group算子用于将所有key相似的记录放入同一个包中。这有助于我们对列执行聚合。