zoukankan      html  css  js  c++  java
  • spark 运行时java.io.InvalidClassException: org.apache.commons.lang3.time.FastDateFormat; local class incompatible: stream classdesc serialVersionUID = 2, local class serialVersionUID = 1

    问题描述:

    20/06/29 10:25:47 WARN TaskSetManager: Lost task 66.0 in stage 1.0 (TID 21, jsszdatanode-157, executor 165): java.io.InvalidClassException: org.apache.commons.lang3.time.FastDateFormat; local class incompatible: stream classdesc serialVersionUID = 2, local class serialVersionUID = 1
    	at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:687)
    	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1876)
    	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1745)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2033)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2278)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2202)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2060)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2278)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2202)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2060)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2278)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2202)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2060)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2278)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2202)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2060)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2278)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2202)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2060)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:427)
    	at scala.collection.immutable.List$SerializationProxy.readObject(List.scala:479)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1158)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2169)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2060)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2278)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2202)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2060)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2278)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2202)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2060)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:427)
    	at scala.collection.immutable.List$SerializationProxy.readObject(List.scala:479)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1158)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2169)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2060)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2278)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2202)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2060)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2278)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2202)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2060)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1567)
    	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:427)
    	at org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:75)
    	at org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:114)
    	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:86)
    	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:53)
    	at org.apache.spark.scheduler.Task.run(Task.scala:104)
    	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:351)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:748)

    检查环境中hadoop与spark依赖的lang3版本

    root@-datanode-157:~ # find /data/src -name "commons-lang3-*"
    /data/src/bak/spark-2.1.1/jars/commons-lang3-3.5.jar
    /data/src/spark-2.1.1/jars/commons-lang3-3.5.jar
    /data/src/hadoop-2.8.4/share/hadoop/tools/lib/commons-lang3-3.3.2.jar

    两个版本中

    serialVersionUID = 2L 与报错不符合,考虑还有其他包对lang3有依赖
     * versions. FastDateFormat implements the behavior of Java 7.</p>
     *
     * @since 2.0
     */
    public class FastDateFormat extends Format implements DateParser, DatePrinter {
        /**
         * Required for serialization support.
         *
         * @see java.io.Serializable
         */
        private static final long serialVersionUID = 2L;
    
        /**
         * FULL locale dependent date or time style.
    root@server-02:/data/src/spark-2.1.1_20200623/jars # find ./ -name "*.jar" -exec grep -Hsli FastDateFormat {} ; 
    ./commons-lang-2.6.jar
    ./commons-lang3-3.3.2.jar
    ./com.bilibili.hiveudf.jar

    可以看到还有 com.bilibili.hiveudf.jar中依赖了FastDateFormat 类

    检查com.bilibili.hiveudf.jar 

     * versions. FastDateFormat implements the behavior of Java 7.</p>
     *
     * @since 2.0
     * @version $Id: FastDateFormat.java 1146138 2011-07-13 17:01:37Z joehni $
     */
    public class FastDateFormat extends Format {
        // A lot of the speed in this class comes from caching, but some comes
        // from the special int to StringBuffer conversion.
        //
        // The following produces a padded 2 digit number:
        //   buffer.append((char)(value / 10 + '0'));
        //   buffer.append((char)(value % 10 + '0'));
        //
        // Note that the fastest append to StringBuffer is a single char (used here).
        // Note that Integer.toString() is not called, the conversion is simply
        // taking the value and adding (mathematically) the ASCII value for '0'.
        // So, don't change this code! It works and is very fast.
    
        /**
         * Required for serialization support.
         *
         * @see java.io.Serializable
         */
        private static final long serialVersionUID = 1L;

    果然如此,去掉这个包重新运行报错任务,顺利完成。

      

    升级com.bilibili.hiveudf.jar包依赖的commons-lang3包即可

  • 相关阅读:
    docker-compose,docker-machine,docker swarm 的简单总结
    linux ubuntu安装好后,开通远程登录
    docker数据卷的使用 -v --volumes--from
    shell脚本中source无效
    模块 shutil
    模块 sys
    模块 os
    模块 random
    模块 datetime,time
    import本质
  • 原文地址:https://www.cnblogs.com/songchaolin/p/13207224.html
Copyright © 2011-2022 走看看