hql通过jdbc连接执行错误LazyLongObjectInspector cannot be cast to SettableLongObjectInspector

今天在通过jdbc执行hql时出现了一下错误:
2015-11-23 19:55:39,515 FATAL [IPC Server handler 9 on 46637] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1446869087133_1399_m_000000_0 - exited : java.lang.RuntimeException: Error in configuring object
	at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:109)
	at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:75)
	at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)
	at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:449)
	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
	at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:415)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
	at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:106)
	... 9 more
Caused by: java.lang.RuntimeException: Error in configuring object
	at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:109)
	at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:75)
	at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)
	at org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:38)
	... 14 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:106)
	... 17 more
Caused by: java.lang.RuntimeException: Map operator initialization failed
	at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:147)
	... 22 more
Caused by: java.lang.ClassCastException: org.apache.hadoop.hive.serde2.lazy.objectinspector.primitive.LazyLongObjectInspector cannot be cast to org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableLongObjectInspector
	at org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriterFactory.genVectorExpressionWritable(VectorExpressionWriterFactory.java:410)
	at org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpressionWriterFactory.processVectorInspector(VectorExpressionWriterFactory.java:1102)
	at org.apache.hadoop.hive.ql.exec.vector.VectorReduceSinkOperator.initializeOp(VectorReduceSinkOperator.java:55)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:385)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:469)
	at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:425)
	at org.apache.hadoop.hive.ql.exec.vector.VectorFilterOperator.initializeOp(VectorFilterOperator.java:77)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:385)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:469)
	at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:425)
	at org.apache.hadoop.hive.ql.exec.TableScanOperator.initializeOp(TableScanOperator.java:193)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:385)
	at org.apache.hadoop.hive.ql.exec.MapOperator.initializeOp(MapOperator.java:431)
	at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:385)
	at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:126)
	... 22 more
是说类型转换错误,但是如果我把hql直接copy到hive-cli中运行没有问题,查了一下午也没有找到原因。
这条语句之前运行的很好,因为hql中查询的表都是分区表,之前没有加分区的条件,今天加上分区的限制条件之后就出现了以上的问题,因为这条hql中有多个表连接,我就把各个字句中的分区条件先去掉,然后在一次加一个,加完后通过jdbc执行,终于定位到是那一条字句有问题:
select unique_id,getAccount(additional_type,additional_value) as accounts from (select unique_id,additional_type,additional_value from(select unique_id,additional_type,additional_value,row_number() over (distribute by unique_id,additional_type sort by time_upd DESC) rownum from dws_i_appserver_cust_additional_info where date='20151123')addinfo where rownum<=1)ac group by unique_id 其中红色部分既有分区限制date='20151123',又有row_number,按说这样写是没有问题的,因为在hive-cli中跑没有问题,可能是hiveserver2中某个配置有问题,但是没有找到原因,改成下列形式后就没有问题了:
select unique_id,concat_ws('&&',collect_set(concat(additional_type,'||',additional_value))) as accounts from (select unique_id,additional_type,additional_value from(select unique_id,additional_type,additional_value,row_number() over (distribute by unique_id,additional_type sort by time_upd DESC) rownum from (select unique_id,additional_type,additional_value,time_upd from dws_i_appserver_cust_additional_info where date='20151123')rowinfo )addinfo where rownum<=1)ac group by unique_id。
不知道有没有大神能给解答一下?!

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer是一个Java的异常。这个异常表示试图将一个Long类型的对象转换为Integer类型时发生了类型转换错误。 解决这个问题的方法之一是将Long类型的对象先转换为字符串,然后再将字符串转换为Integer类型。可以使用以下代码来实现: Long i = (Long) session.createQuery(hql).uniqueResult(); Integer ii= new Integer(String.valueOf(i)); 另外,需要注意的是,Java中的容器类是可以存储不同类型的对象的。比如List、Set、Map等容器类都可以存储不同类型的对象。这意味着可以将任何Java对象放入这些容器中。因此,Java容器是一种异质容器。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer](https://blog.csdn.net/aopiao5855/article/details/101548712)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [JDK 1.5的泛型實現(Generics in JDK 1.5)](https://download.csdn.net/download/hexiang221/1996377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值