与处理int long命令相关的hadoop pig错误

kkih6yb8  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(224)

这是部分代码(在测试这部分之前省略的代码)

data3 = FOREACH data2 GENERATE group, SUM(data1.cpc) as cost:int;
   data4 = ORDER data3 BY cost ASC;
   DESCRIBE data4;

这对结果没有问题:

data4: {group: chararray,cost: int}

但是,如果我改变
描述数据4

转储数据4
,将导致错误:

2014-06-11 17:22:26,525 ERROR org.apache.pig.tools.pigstats.SimplePigStats:
ERROR: java.lang.RuntimeException: java.lang.ClassCastException: java.lang.L
ong cannot be cast to java.lang.Integer

2014-06-11 17:22:26,525 ERROR org.apache.pig.tools.pigstats.PigStatsUtil: 1
map reduce job(s) failed!

2014-06-11 17:22:26,573 ERROR org.apache.pig.tools.grunt.Grunt: ERROR 1066:
Unable to open iterator for alias data4. Backend error : java.lang.RuntimeEx
ception: java.lang.ClassCastException: java.lang.Long cannot be cast to java
.lang.Integer

我检查了成本域的数据,每个值都在int范围内,但是如果我更改
作为cost:int

作为cost:long
,错误消失
我只是不明白这里涉及的是长型
谢谢

7hiiyaii

7hiiyaii1#

成本域的值是否在int范围内并不重要。如果它是原始的 intlong . 但是在pig中,在模式中定义一个字段 cost:int 将其定义为对象java.lang.integer,并且不能转换为java.lang.long
e、 g以下代码甚至不能用java编译:

Integer myInt = new Integer(23);
    Long myLong = (Long) myInt;

这会导致classcastexception:

Integer myInt = new Integer(23);

    Object myObject = (Object) myInt;

    Long myLong = (Long) myObject;

相关问题