无法将 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

无法将 .json 文件从 CSV 下载到 JSON 转换并且无法将 JSON 转换为 CSV

无法将 ReactiveUI 添加到 NUnit 测试项目

“无法将图像数据写入路径” - Laravel 图像干预