我在使用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
我有什么想法可以解决这个问题吗?
答案 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正在制造这个问题。