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 函数的主要内容,如果未能解决你的问题,请参考以下文章