当vectorized.execution.enabled 使用带有Hive 的ORC 文件格式时发生ClassCastException

Posted

技术标签:

【中文标题】当vectorized.execution.enabled 使用带有Hive 的ORC 文件格式时发生ClassCastException【英文标题】:ClassCastException while using ORC file format with Hive when vectorized.execution.enabled 【发布时间】:2016-08-01 14:17:40 【问题描述】:

我有一个具有以下属性的配置单元表 -

ORC 存储格式 事务性 = true 按 4 个键分区 - 年、月、日、小时 由 groupingKey 存储

我正在使用 Hive Streaming 将数据直接填充到表中。

现在我的问题是 - 我正在尝试运行以下查询

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

Hive 版本 - 1.2.1

【问题讨论】:

Rishabh,我的回答有用吗? @RamPrasadG 我正在使用 hive 1.2.1 并尝试查看是否可以升级到 1.3.0。因此无法验证这一点。但是,这似乎是同一个问题。非常感谢。将验证并接受答案 如果您对答案没问题,请投票/接受为所有者 【参考方案1】:

似乎这个蜂巢问题已被关闭/修复。请重新检查您使用的配置单元版本。

请查看Vectorized execution causes ClassCastException

【讨论】:

以上是关于当vectorized.execution.enabled 使用带有Hive 的ORC 文件格式时发生ClassCastException的主要内容,如果未能解决你的问题,请参考以下文章

更新:为啥当用户是管理员时关系有效,但当普通用户时不会?

当位于顶级栏目显示下级栏目,当位于二级栏目显示同级栏目,当位于三级目录,显示上级栏目

当应用程序在后台时扫描外围设备(例如,当屏幕锁定时)

psp一骑当千交叉冲击金手指

当组长有感

专访黄勇:Java在未来的很长一段时间仍是主流(把老板当情人,把同事当小孩,把客户当病人)