hive 异常值_could not instantiate bean class

hive 异常值_could not instantiate bean classhive升级过程中异常记录-java.lang.ClassCastException:org.apache.hadoop.hive.ql.io.orc.OrcStructcannotbecasttoorg.apache.hadoop.io.BinaryComparable常规ClassCastException问题梳理-来源网络Causedby:java.lang.ClassCastException:org.apache.hadoop.io.Textcannotbecastt

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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.BinaryComparable
	at 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 more


FAILED: 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不一致的情况。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195656.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 国产CPU架构、国产Linux操作系统及其国产数据库等关键应用

    国产CPU架构、国产Linux操作系统及其国产数据库等关键应用关于国产CPU架构及Linux变种编译器1、CPU架构3大阵营整合为两大CPU阵营:处理器架构_百度百科CPU架构是CPU厂商给属于同一系列的CPU产品定的一个规范,主要目的是为了区分不同类型CPU的重要标示。市面上的CPU分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM为首的精简指令集CPU。两个不同品牌的CPU,其产品的架构也不相同,例如,Intel、AMD的CPU是X86架构的,而IBM公司的CPU是PowerPC架构,AR…

    2022年5月13日
    114
  • XML格式化工具[通俗易懂]

    XML格式化工具[通俗易懂] 做接口开发的时候,往往接受参数或返回值是一个XML的字符串。如下图,不方便辨识两种方法,1.将它保存为xxx.xml,然后用浏览器打开。这种方法稍微有些麻烦。2.使用UltraEdit工具 …

    2022年7月16日
    12
  • 快速排序—(面试碰到过好几次)

    快速排序—(面试碰到过好几次)原理:  快速排序,说白了就是给基准数据找其正确索引位置的过程.  如下图所示,假设最开始的基准数据为数组第一个元素23,则首先用一个临时变量去存储基准数据,即tmp=23;然后分别从数组的两端扫描数组,设两个指示标志:low指向起始位置,high指向末尾.  首先从后半部分开始,如果扫描到的值大于基准数据就让high减1,如果发现有元素比该基准数据的值小(如上图中18&lt…

    2022年7月11日
    21
  • jvisualvm 工具使用

    jvisualvm 工具使用转自:https://www.cnblogs.com/kongzhongqijing/articles/3625340.html jvisualvm工具使用 VisualVM是Netbeans的profile子项目,已在JDK6.0update7中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe)。&nbsp;https…

    2025年6月25日
    3
  • 【原创】异步FIFO设计原理详解 (含RTL代码和Testbench代码)

    【原创】异步FIFO设计原理详解 (含RTL代码和Testbench代码)FIFO在硬件上是一种地址依次自增的SingleDulRAM,按读数据和写数据工作的时钟域是否相同分为同步FIFO和异步FIFO,其中同步FIFO是指读时钟和写时钟为同步时钟,常用于数据缓存和数据位宽转换;异步FIFO通常情况下是指读时钟和写时钟频率有差异,即由两个异步时钟驱动的FIFO,由于读写操作是独立的,故常用于多比特数据跨时钟域处理。本文仅讨论异步FIFO的设计。因为FIFO的硬件本质是一块SingleDulRAM,无论它的内部结构和原理如何复杂,最核心的…

    2022年8月13日
    7
  • HTML5 FormData 方法介绍以及实现文件上传

    HTML5 FormData 方法介绍以及实现文件上传本文介绍了XMLHttpRequestLevel2中的FormData接口,利用FormData我们可以轻松的实现文件上传,FormData对象还有一些实用的方法,本文也对其一一进行了解释。

    2025年7月25日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号