HADOOP PIG错误与处理int long的订单相关

HADOOP PIG错误与处理int long的订单相关,hadoop,types,apache-pig,Hadoop,Types,Apache Pig,这是部分代码(在测试该部分之前省略了代码) 这对结果没有问题: 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.la

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

这对结果没有问题:

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范围内,但是如果我更改

成本:整数

成本:长期

,错误消失了

我就是不明白这里是怎么涉及到long类型的


谢谢

成本字段的值在int范围内并不重要。如果它将原语
int
强制转换为
long
,这可能会起作用。但是在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;

来自
data1
cpc
的数据类型是什么?对于在这里查找此帖子的人,请参阅。
    Integer myInt = new Integer(23);

    Object myObject = (Object) myInt;

    Long myLong = (Long) myObject;