Spark Streaming中的java.lang.LinkageError

时间:2017-09-26 06:21:34

标签: apache-spark spark-streaming

我在使用Scala 2.11.8的CDH 5.10群集上使用Spark 2.2。一切都工作正常,但后来我突然开始在驱动程序代码中得到这个:

     Exception in thread "main" java.lang.LinkageError: loader constraint violation: when resolving method 
    "org.apache.spark.streaming.StreamingContext$.getOrCreate(Ljava/lang/String;Lscala/Function0;Lorg/apache/hadoop/conf/Configuration;Z)Lorg/apache/spark/streaming/StreamingContext;" 
    the class loader (instance of org/apache/spark/util/ChildFirstURLClassLoader) of the current class, com/hp/hawkeye/driver/StreamingDriver$, 
    and the class loader (instance of sun/misc/Launcher$AppClassLoader)
 for the method's defining class, org/apache/spark/streaming/StreamingContext$, 
have different Class objects for the type scala/Function0 used in the signature

我有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

找出解决方案 - 有一个类加载器冲突,这是因为在集群上手动放置依赖jar。这些有助于:

rm -rf~ / .sbt rm -rf~ / .ivy2 / cache

然后重新启动IDEA。集群上的Spark-submit很好。但是在lib(spark-avro-assembly-4.0.0-snapshot)中放置一个额外的依赖jar会带来这个问题。不知何故,那个使用spark-avro 3.2修复了Spark 2.2的jar正在制造这个问题。