我在笔记本电脑上创建了一个独立的星火群集, 然后我进入一个火花项目的sbt控制台并尝试嵌入一个火花实例:
val conf = new SparkConf().setAppName("foo").setMaster(/* Spark Master URL*/)
val sc = new SparkContext(conf)
到那里一切正常,然后我尝试
sc.parallelize(Array(1,2,3))
// and I get: java.lang.NoClassDefFoundError: Could not initialize class org.apache.spark.rdd.RDDOperationScope$
我该如何解决这个问题?
答案 0 :(得分:3)
也许你错过了lib
。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.4</version>
</dependency>
答案 1 :(得分:1)
此错误消息通常伴随
obj
这表示依赖项中存在冲突版本(显然)。在Spark世界中,通常是因为我们使用的某些lib与spark附带的lib有依赖关系冲突。
使用coursier resolve可以了解正在发生的事情。 (gradle也有debugging dependency。
Cause: com.fasterxml.jackson.databind.JsonMappingException: Incompatible Jackson version: 2.9.8
然后为我们的应用程序构建一个uber jar,或排除构建中的冲突(如果可能)。例如cs resolve org.apache.spark:spark-core_2.11:2.4.5 | grep jackson
cs resolve com.thesamet.scalapb:scalapb-json4s_2.11:0.10.0 | grep jackson
build.gradle
答案 2 :(得分:0)
如果使用Spark控制台,请将以下jar添加到spark的Bin文件夹中。 https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.9.9.3