猪脚本:查找组中的项目总和

时间:2015-02-07 07:47:10

标签: hadoop apache-pig

这是我试图运行的行

counts = FOREACH z {sum=SUM(B::counter);GENERATE group as A::month,sum;};

但是我收到以下错误:

<file s3://emr-test/kiran/script/goal.pig, line 6, column 28> Invalid field projection. Projected field [B::counter] does not exist in schema: group:chararray,y:bag{:tuple(A::id:chararray,A::month:chararray,B::counter:int)}.

如何在这样一个基于一列分组的元组包的模式上进行总和聚合?

2 个答案:

答案 0 :(得分:1)

SUM函数适用于元组的包,其中元组包含int,float等的值。但是这里,bag包含元组的元组。如果你需要执行任何聚合,在这种情况下你必须编写一个UDF,你可以在其中传递包并通过成员解析以找到总和。或者你必须重组数据,使其包含一袋在这里反击

答案 1 :(得分:0)

请检查这是否是您要找的:

  • 转储A;
    (A,B,1) (A,B,3) 转储B;      (A,B)       C =加1澳元1美元,B加1美元;       D = GROUP C $ 1;         E = FOREACH D GENERATE FLATTEN(A. $ 0),group,SUM(C.A :: num);          dump E;