文档章节

java.io.InvalidClassException 解决方案

momisabuilder
 momisabuilder
发布于 2017/06/01 14:59
字数 277
阅读 275
收藏 0

一、出现场景

Spark读取Elasticsearch的时候,抛出的异常

二、错误日志

org.elasticsearch.hadoop.serialization.EsHadoopSerializationException: cannot deserialize object
    at org.elasticsearch.hadoop.util.IOUtils.deserializeFromBase64(IOUtils.java:84)
    at org.elasticsearch.hadoop.rest.RestService.createReader(RestService.java:303)
    at org.elasticsearch.hadoop.mr.EsInputFormat$ShardRecordReader.init(EsInputFormat.java:206)
    at org.elasticsearch.hadoop.mr.EsInputFormat$WritableShardRecordReader.init(EsInputFormat.java:386)
    at org.elasticsearch.hadoop.mr.EsInputFormat$ShardRecordReader.initialize(EsInputFormat.java:188)
    at org.apache.spark.rdd.NewHadoopRDD$$anon$1.<init>(NewHadoopRDD.scala:133)
    at org.apache.spark.rdd.NewHadoopRDD.compute(NewHadoopRDD.scala:104)
    at org.apache.spark.rdd.NewHadoopRDD.compute(NewHadoopRDD.scala:66)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:277)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:244)
    at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:35)
    at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:277)
    at org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:69)
    at org.apache.spark.rdd.RDD.iterator(RDD.scala:242)
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:63)
    at org.apache.spark.scheduler.Task.run(Task.scala:70)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:213)
    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:745)
Caused by: java.io.InvalidClassException: org.elasticsearch.hadoop.serialization.dto.mapping.Field; local class incompatible: stream classdesc serialVersionUID = 4438505825805813822, local class serialVersionUID = -3451876473461899198
    at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617)
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1622)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
    at org.elasticsearch.hadoop.util.IOUtils.deserializeFromBase64(IOUtils.java:79)
    ... 19 more

三、解决方案

org.elasticsearch.hadoop.serialization.dto.mapping.Field 这个类在elasticsearch-hadoop-2.3.3.jar中。

应用程序lib下面有elasticsearch-hadoop-2.3.3.jar,它会被分发到spark集群的worker节点上去。而Spark的Worker节点在执行的时候也会加载/home/hadoop/software/spark-1.4.1/lib下的Jar,不巧的是/home/hadoop/software/spark-1.4.1/lib下面有个Jar叫做,elasticsearch-hadoop-hive-2.1.2.jar,反编译后发现,也有org.elasticsearch.hadoop.serialization.dto.mapping.Field同样的类。删除掉elasticsearch-hadoop-hive-2.1.2.jar,重启Spark集群。问题解决。

© 著作权归作者所有

momisabuilder

momisabuilder

粉丝 15
博文 67
码字总数 31440
作品 0
西安
后端工程师
私信 提问
出现java.io.InvalidClassException

当 Serialization 运行时检测到某个类具有以下问题之一时,抛出此异常。 该类的序列版本号与从流中读取的类描述符的版本号不匹配 该类包含未知数据类型 该类没有可访问的无参数构造方法 下面...

周烈庆
2013/02/06
4.1K
2
External反序列化异常

java.io.InvalidClassException: Person; no valid constructor at java.io.ObjectStreamClass$ExceptionInfo.newInvalidClassException(Obje ctStreamClass.java:147) at java.io.ObjectStr......

karrie
2013/09/23
855
2
JAVA Serializable 类中的Serial Version ID

在JAVA中,当需要把一个类序列化的时候,显示提供一个serialVersionUID有什么用呢? a)小幅性能提升,免除JVM运行时对这个值的计算。 b)避免java.io.InvalidClassException,不同的JVM对ser...

晨曦之光
2012/04/25
1K
1
JFinal 序列号的问题,发生冲突

下午在修改User类方法的时候,突然就出现了这个问题,之前一直都没问题。一直找不到哪里出了问题,后来把类名换成UserABC,结果又报java.lang.ClassNotFoundException: com.demo.user.User 急...

Knight_King
2013/05/10
291
1
.InvalidClassException: org.apache.spark.rpc.RpcEndpointRef; local class incompatible: stream

@OSC_BXQzMJ 你好,想跟你请教个问题: ERROR server.TransportRequestHandler: Error while invoking RpcHandler#receive() on RPC id 4738658080510185602 java.io.InvalidClassException:......

知行合一1
2017/02/17
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

如何编写高质量的 JS 函数(1) -- 敲山震虎篇

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/7lCK9cHmunvYlbm7Xi7JxQ 作者:杨昆 一千个读者,有一千个哈姆雷特。 此系列文章将会从函数的执行机制、鲁棒性、函...

vivo互联网技术
56分钟前
5
0
学会这5个Excel技巧,让你拒绝加班

在网上,随处都可以看到Excel技巧,估计已看腻了吧?但下面5个Excel技巧会让你相见恨晚。关键的是它们个个还很实用 图一 技巧1:快速删除边框 有时当我们处理数据需要去掉边框,按Ctrl+Shif...

干货趣分享
今天
11
0
JS基础-该如何理解原型、原型链?

JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯定不能对这个...

OBKoro1
今天
10
0
高防CDN的出现是为了解决网站的哪些问题?

高防CDN是为了更好的服务网络而出现的,是通过高防DNS来实现的。高防CDN是通过智能化的系统判断来路,再反馈给用户,可以减轻用户使用过程的复杂程度。通过智能DNS解析,能让网站访问者连接到...

云漫网络Ruan
今天
15
0
OSChina 周一乱弹 —— 熟悉的味道,难道这就是恋爱的感觉

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :好久没分享歌了分享张碧晨的单曲《今后我与自己流浪》 《今后我与自己流浪》- 张碧晨 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
3.3K
25

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部