Pig Script:查找组中项目的总和

Pig Script: Find sum of items in a group

这是我想要的行 运行

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)}.

如何对这种具有基于一列分组的元组包的模式进行求和聚合?

SUM 函数适用于元组包,其中元组包含 int、float 等值。但在这里,包包含元组的元组。如果您需要执行任何聚合,在这种情况下,您必须编写一个 UDF,您可以在其中传递包并解析成员以找到 sum.Or,您必须以这样的方式重组数据,使其包含这里有一袋专柜

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

  • 转储 A;
    (a,b,1) (a,b,3) 转储 B; (a,b) C = JOIN A by $1 , B by $1; D = C 组乘以 1 美元; E = FOREACH D GENERATE FLATTEN(A.$0),group,SUM(C.A::num); 转储 E;