无法将org.apache.pig.builtin.SUM的匹配函数推断为多个或不适合。请使用明确的演员

时间:2015-11-20 10:31:30

标签: hadoop apache-pig

我想要包含长类型数字的列的总和。 我尝试了很多可能的方法,但仍然没有解决施法错误。

我的猪代码:

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] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1045:    无法将org.apache.pig.builtin.SUM的匹配函数推断为多个或不适合。请使用明确的演员。   日志文件的详细信息:/users/bimallik/pig_1448014584395.log   2015-11-20 02:17:03,629 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 50%complet

2 个答案:

答案 0 :(得分: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总和的总和,该总和再次由多行组成,其中我需要一个单独的求和值。

答案 1 :(得分:0)

我的回答可能听起来非常引人注目,但我正在写真相,并想把所有乘船旅行的人拉出悲伤。 我在本地模式下使用PIG。是的..在本地模式下,我遇到了同样的问题。我已经尝试了互联网上提供的所有解决方案,但注意到似乎对我有用。我将我的PIG从本地切换到mapreduce模式并尝试解决方案It Worked.In mapreduce模式所有解决方案似乎都在工作。我不知道这是不是一个错误,但在本地模式下运行对我不起作用。