我想要包含长类型数字的列的总和。 我尝试了很多可能的方法,但仍然没有解决施法错误。
我的猪代码:
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
答案 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模式所有解决方案似乎都在工作。我不知道这是不是一个错误,但在本地模式下运行对我不起作用。