启用vectoried.execution.enabled时,对配置单元使用orc文件格式时发生classcastexception

kuhbmx9i  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(352)

我有一个具有以下属性的配置单元表-
orc存储格式
事务性=真
按4个键分区-年、月、日、小时
按分组键扣紧
我使用hive流媒体将数据直接填充到表中。
现在我的问题是-我正在尝试运行以下查询

select count(*) from table_name;

我有以下例外

Caused by: java.lang.ClassCastException:    org.apache.hadoop.hive.ql.io.orc.OrcStruct$OrcStructInspector cannot be cast to org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector
at org.apache.hadoop.hive.ql.exec.vector.VectorizedBatchUtil.setVector(VectorizedBatchUtil.java:295)
at org.apache.hadoop.hive.ql.exec.vector.VectorizedBatchUtil.acidAddRowToBatch(VectorizedBatchUtil.java:275)
at org.apache.hadoop.hive.ql.io.orc.VectorizedOrcAcidRowReader.next(VectorizedOrcAcidRowReader.java:82)

但是,如果我通过设置以下属性来关闭矢量化执行

set hive.vectorized.execution.enabled = false;

一切正常(尽管需要很长时间才能完成)。
为什么会这样?据我所知,使用orc格式,矢量化执行应该可以工作。
hadoop版本-2.7.1
配置单元版本-1.2.1

7fyelxc5

7fyelxc51#

看来这个Hive问题已经解决了。请重新检查您使用的Hive版本。
请检查矢量化执行导致classcastexception

相关问题