我想对包含长类型数字的列求和。我尝试了许多可能的方法,但仍然没有得到解决的演员错误。
我的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:26631[main]error org.apache.pig.tools.grunt.grunt-错误1045:无法推断org.apache.pig.builtin.sum的匹配函数是多个匹配函数,或者它们都不匹配。请使用显式转换。日志文件中的详细信息:/users/bimallik/pig_.log 2015-11-20 02:17:03629[main]info org.apache.pig.backend.hadoop.executionengine.mapreducelayer.mapreducelauncher-完成50%
2条答案
按热度按时间syqv5f0l1#
@manjunathballur感谢您的投入。我改变了我的代码如下
现在a正在生成一个包含公共inbytes的包,x给出每个包的inbytes的总和,这个总和也是由多行组成的,我需要一个求和值。
4bbkushb2#
我的回答可能听起来很戏剧化,但我写的是真相,我想把所有乘坐我船的人从悲伤中拉出来。我用的是本地模式的Pig。是的,在本地模式下,我得到了同样的问题。我已经尝试了互联网上所有的解决方案,但似乎没有什么对我有效。我把我的Pig从本地切换到mapreduce模式,并尝试了它工作的解决方案。在mapreduce模式下,所有的解决方案似乎都在工作。我不知道这是否是一个错误,但在本地模式下运行没有为我工作。