PIG 中的 SUM 函数

Posted

技术标签:

【中文标题】PIG 中的 SUM 函数【英文标题】:SUM function in PIG 【发布时间】:2016-06-24 18:05:28 【问题描述】:

开始学习 Pig latin 脚本并坚持以下问题。我在同一个主题上经历了类似的问题,但没有任何运气!想求所有年龄字段的总和。

  DUMP X;
(22)(19)
grunt> DESCRIBE X;
X: age: int

我尝试了几个选项,例如:

Y = FOREACH ( group X all ) GENERATE SUM(X.age);

但是,低于异常。

 Invalid field projection. Projected field [age] does not exist in schema: group:chararray,X:bag:tuple(age:int).

感谢您的时间和帮助。

【问题讨论】:

也发布您的脚本。你想做什么? 样本数据; (史密斯,(猛龙队,1),(叶子,2),[年龄#22])(卡罗尔,(洋基队,1),(蓝鸟队,2),(骑士队,3),[年龄# 19]) 脚本代码:A = LOAD 'input/pigData/pig_expressions.txt' AS T: tuple(f1:chararray, f2:bag T2:tuple(t1:chararray, t2:int), f3:map[] ); X = FOREACH A GENERATE T.f3#'age' AS age:int; 您可以编辑您的问题并发布这些步骤。有人可能会在这里提供帮助。 你可以试试 X.$0.age 【参考方案1】:

我认为 Y 投影应该像你写的那样工作。这是相同的 mi 小示例代码,这对我来说很好。

 X = LOAD 'SO/sum_age.txt' USING PigStorage('\t') AS (age:int);
 DESCRIBE X;
 Y = FOREACH ( group X all ) GENERATE 
     SUM(X.age);
 DESCRIBE Y;
 DUMP Y;

所以你的问题看起来很奇怪。我使用了以下输入数据:

-bash-4.1$ cat sum_age.txt 
22
19

你能用我在这里插入的脚本尝试相同的数据吗?

【讨论】:

感谢您的时间和帮助。您提供的示例确实有效。但是,我得到的数据并不好。 你能分享一些你所拥有的输入数据的例子吗? (史密斯,(猛龙, 1),(叶子, 2), [年龄#22]) (carol,(yankees, 1),(blue jays, 2), (cavaliers, 3), [age#19]) 你有这个的猪模式文件吗?

以上是关于PIG 中的 SUM 函数的主要内容,如果未能解决你的问题,请参考以下文章

从 PIG 中的 SUM 中获取 MAX

Apache Pig 中的 SUM

SUM 函数上的 Pig 错误

无法在 Pig 中使用 max 和 sum 函数

无法将 org.apache.pig.builtin.SUM 的匹配函数推断为多个匹配或都不匹配。请使用显式演员表

PIG 对元组中的对应元素求和