无法将 org.apache.pig.builtin.SUM 的匹配函数推断为多个匹配或都不匹配。请使用显式演员表
Posted
技术标签:
【中文标题】无法将 org.apache.pig.builtin.SUM 的匹配函数推断为多个匹配或都不匹配。请使用显式演员表【英文标题】:Could not infer the matching function for org.apache.pig.builtin.SUM as multiple or none of them fit. Please use an explicit cast 【发布时间】:2015-11-20 10:31:29 【问题描述】:我想做一个包含长类型数字的列的总和。 我尝试了很多可能的方法,但仍然没有解决演员表错误。
我的猪代码:
raw_ds = LOAD '/tmp/bimallik/data/part-r-00098' using PigStorage(',') AS (
d1:chararray, d2:chararray, d3:chararray, d4:chararray, d5:chararray,
d6:chararray, d7:chararray, d8:chararray, d9:chararray );
parsed_ds = FOREACH raw_ds GENERATE d8 as inBytes:long, d9 as outBytes:long;
X = FOREACH parsed_ds GENERATE (long)SUM(parsed_ds.inBytes) AS inBytes;
dump X;
错误快照:
2015-11-20 02:16:26,631 [main] 错误 org.apache.pig.tools.grunt.Grunt - 错误 1045: 。 日志文件中的详细信息:/users/bimallik/pig_1448014584395.log 2015-11-20 02:17:03,629 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 50% 完成
【问题讨论】:
显示来自 part-r-00098 文件的示例输入 你检查了这个答案吗? ***.com/questions/16405267/… 【参考方案1】:@ManjunathBallur 感谢您的意见。 我现在改变了我的代码如下
<..same as before ...>
A = GROUP parsed_ds by inBytes;
X = FOREACH A GENERATE SUM(parsed_ds.inBytes) as h;
DUMP X;
现在 A 正在生成一个公共 inBytes 包,X 给出每个包的 inBytes 总和的总和,该总和再次由多行组成,因为我需要一个总和值。
【讨论】:
【参考方案2】:我的回答可能听起来很戏剧化,但我正在写真相,并想把所有在我船上旅行的人从悲伤中拉出来。 我在本地模式下使用 PIG。是的..在本地模式下,我遇到了同样的问题。我已经尝试了互联网上所有可用的解决方案,但注意到似乎对我有用。我将我的 PIG 从本地切换到 mapreduce 模式并尝试了解决方案 It Worked。在 mapreduce 模式下,所有解决方案似乎都在工作。我不知道这是否是一个错误,但在本地模式下运行对我不起作用。
【讨论】:
以上是关于无法将 org.apache.pig.builtin.SUM 的匹配函数推断为多个匹配或都不匹配。请使用显式演员表的主要内容,如果未能解决你的问题,请参考以下文章
无法将 createdAt 和 updatedAt 保存为日期时间值,也无法将后端保存为前端
C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable
无法将类型为“System.Collections.Generic.List`1[EPMS.Domain.SingleItem]”的对象强制转换为类型“EPMS