hive升级过程中异常记录-java.lang.ClassCastException: org.apache.hadoop.hive.ql.io.orc.OrcStruct cannot be cast to org.apache.hadoop.io.BinaryComparable

常规ClassCastException问题梳理-来源网络

Caused by: java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.hive.ql.io.orc.OrcSerde$OrcSerdeRow

问题原因通常是:表的inputformat 和 outputformat 是 orc,而序列化serde不是orc

参看表结构命令:desc formatted 表名;

修改命令如下:ALTER TABLE 表名 SET FILEFORMAT ORC;

以后创建orc表的时候 指定orc的方式如下:

STORED AS ORC
tblproperties ('orc.compress'='SNAPPY');

Refer:https://www.cnblogs.com/xjh713/p/10137880.html

hive迁移过程中出现的ClassCastException问题-排查

Diagnostic Messages for this Task:
Error: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing writable {175101, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null}at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:157)at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:465)at org.apache.hadoop.mapred.MapTask.run(MapTask.java:349)at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:422)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875)at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168)
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing writable {175101, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null}at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:492)at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:148)... 8 more
Caused by: java.lang.ClassCastException: org.apache.hadoop.hive.ql.io.orc.OrcStruct cannot be cast to org.apache.hadoop.io.BinaryComparableat org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.doDeserialize(LazySimpleSerDe.java:151)at org.apache.hadoop.hive.serde2.AbstractEncodingAwareSerDe.deserialize(AbstractEncodingAwareSerDe.java:76)at org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.readRow(MapOperator.java:125)at org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.access$200(MapOperator.java:89)at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:483)... 9 moreFAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

表现:

1. select 分区表各分区数据都正常;
2. join 分区表各分区,有的分区成功,有的分区报上面的异常;
3. 查看表的serde 确实是orc模式;
4. 查看分区serde 不是orc模式 --- 报错的主要原因;

查看分区格式命令: desc formatted dw.user_first_fee_smb partition(log_date="2021-02-19");

根据测试,如果想把该分区的serde修改为orc模式,可以在 cli客户端使用 insert overwrite 模式

insert overwrite table dw.user_first_fee_smb partition(log_date)  select * from  dw.user_first_fee_smb where log_date="2021-02-19";

但是有哪些表的那些分区需要修改呢,到hive的元数据库查询如下:

select LOCATION,PART_NAME,t.TBL_NAME,INPUT_FORMAT,SLIB
from PARTITIONS a, SERDES b,SDS c ,TBLS t
where a.SD_ID=c.SD_ID and c.SERDE_ID=b.SERDE_ID and t.TBL_ID=a.TBL_ID
and OUTPUT_FORMAT='org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' and SLIB<>'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
;

然后把这些表的这些分区,重新创建或 insert overwrite一下就ok了。

分析

表最开始创建 没有使用STORED AS ORC 模式,而 serde又没有指定,后续修改了表的格式为ALTER TABLE 表名 SET FILEFORMAT ORC;

但是已经存在的分区,并没有跟随而被修改。所以导致了分区和表的 serde不一致的情况。

hive 异常ClassCastException相关推荐

  1. Java异常ClassCastException

    Java异常ClassCastException 参考文章: (1)Java异常ClassCastException (2)https://www.cnblogs.com/coder-zyc/p/10 ...

  2. 关于hive异常:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStor

    关于hive异常:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStor Exception in t ...

  3. hive 异常 (Attempt to do update or delete on table terminal that does not use an )

    hive 异常 (Attempt to do update or delete on table terminal that does not use an ) hive > delete fr ...

  4. 【Hudi数据湖应用】Flink作业同名类强转异常ClassCastException修复

    一.异常描述 近日升级到hudi 0.11后,在flink应用中遭遇了一个神级异常:java.lang.ClassCastException: org.apache.hudi.common.fs.Ho ...

  5. 强制转换类型异常ClassCastException

    public abstract class Animal {abstract void eat();} class Cat extends Animal{@Overridevoid eat() {Sy ...

  6. java class cast_Java异常ClassCastException

    在说ClassCastException之前,先介绍下引用类型转换: 引用类型转换分为向上转型和向下转型两种: 向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的:当父类引用指向一 ...

  7. hive异常 return code X from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask 解决

    转自:https://www.iteye.com/blog/vase-2090320 不知道是不是hive-0.12版增强了local mode的原因,在之前版本运行好好的Hive-QL在这个版本上错 ...

  8. 手把手教你解决ClassCastException类型转换异常

    一. 前言 最近有很多初学Java的小伙伴,甚至是学习到了JavaWeb及框架阶段的小伙伴,跑来问千锋健哥:该如何解决Java中的ClassCastException类型转换异常?为了给大家解决这个较 ...

  9. java异常类 Object类

    1.Object类 Object类是所有类的父类,是最顶层的父类. 当一个类没有直接继承其它父类时,这个类的直接父类就是Object类. class Person { ... } 等价于 class ...

最新文章

  1. Java多线程复习:2(线程的创建和使用)
  2. 50的阶乘用c语言编写,求10000的阶乘(c语言代码实现)
  3. geotools读取shp文件及shp文件操作工具类代码
  4. java枚举比较大小写_Spring 3.0 MVC绑定枚举区分大小写
  5. [线性代数]Note3--乘法和逆矩阵
  6. 数据科学和人工智能技术笔记 四、图像预处理
  7. BeyondCompare This license key has been revoked:
  8. jsp页面时间戳转换为时间格式
  9. 人生果实 Life is fruity 缓慢而坚定地做自己能做的事情
  10. 服务器安装动易组件,动易SiteWeaver6.8安装方法
  11. 从Visual SourceSafe (VSS)服务器下载文件(C#)
  12. nexus nexus3_如何在Nexus 7的主屏幕上启用横向方向
  13. esp8266 蓝牙耳机_基于Qualcomm QCC3001/TWS迷你型入耳式蓝牙耳机方案
  14. Halcon图像分割-多个threshold阈值处理算子讲解
  15. 商业力:开发者一站式服务
  16. 树莓派3B+ 智能家居(HomeKit)
  17. networkx igraph相互转换+效率比较
  18. 杰理-手表-AC701-watch-添加表盘
  19. docker portainer agent 安装
  20. int argc,char*argv[ ]的简洁解释

热门文章

  1. 可扩展机器学习——Spark分布式处理
  2. [原创]双硬盘四系统安装全功略
  3. python获取安卓手机的屏幕_Python/Kivy用手机屏幕方向改变屏幕(android)
  4. 机械专业应学习Python那个方向
  5. int main(void)和int main()的区别
  6. Java和数据库中Date/Timestamp
  7. ASP.NET中 ValidationSummary(验证总结)的使用
  8. csp2014-03
  9. 深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出的区别,以STM32为例)
  10. 分词与词性标注--第一周学习总结07-28