【hive】Exception: No type found for column type entry 19

菜鸡一只,记录一个hive报错~

前几天,我司的一位数据分析师来找我,给我看了一个报错,大概如下:

Caused by: java.lang.RuntimeException: Error creating a batch
	at org.apache.hadoop.hive.ql.io.orc.VectorizedOrcInputFormat$VectorizedOrcRecordReader.createValue(VectorizedOrcInputFormat.java:114)
	at org.apache.hadoop.hive.ql.io.orc.VectorizedOrcInputFormat$VectorizedOrcRecordReader.createValue(VectorizedOrcInputFormat.java:52)
	at org.apache.hadoop.hive.ql.io.CombineHiveRecordReader.createValue(CombineHiveRecordReader.java:84)
	at org.apache.hadoop.hive.ql.io.CombineHiveRecordReader.createValue(CombineHiveRecordReader.java:42)
	at org.apache.hadoop.hive.shims.HadoopShimsSecure$CombineFileRecordReader.createValue(HadoopShimsSecure.java:156)
	at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.createValue(MapTask.java:180)
	at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
	at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:450)
	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
	at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: No type found for column type entry 19

其实就是他在count一张表的时候,报了这个异常。

因为我们公司之前hive的表,其实出现过一些数据和表结构不对应的关系,所以我自然而然就往那个方向上想了,不过想归想,我还是乖乖的百度寻找解决方法!~

结果搜索到了相关的博客,甚至issue!!

issue:https://issues.apache.org/jira/browse/HIVE-10598

相关博客:

https://blog.csdn.net/Team77/article/details/51822380?locationNum=3&fps=1

https://blog.csdn.net/u010010664/article/details/73379509

 

这样的报错出现在:

创建一张orc表,并且向该表插入数据,这时候再新增字段,插入新的数据,然后count这张表的时候就会报该异常!

 

总结:如何解决?

(有兴趣的大家可以自己研究下原因)

如果该表不是你维护的,你只是使用,建议使用方案一,如果该表是你维护的,建议方案二

方案一:在执行sql前执行set hive.vectorized.execution.enabled = false;

方案二:其实hive中最好还是不要有新增字段或者修改表结构等操作,还是老老实实新建一张表,把以前的数据插入进去即可

 

好了,该说的说完了~菜鸡一只溜了溜了!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值