Zeppelin java.lang.NoClassDefFoundError: Could not initialize class org.apache.spark.rdd.RDDOperationScope$

Zeppelin java.lang.NoClassDefFoundError: Could not initialize class org.apache.spark.rdd.RDDOperationScope$

当我运行代码

val home = "/Users/adremja/Documents/Kaggle/outbrain"
val documents_categories = sc.textFile(home + "/documents_categories.csv")
documents_categories take(10) foreach println

在 spark-shell 中完美运行

scala> val home = "/Users/adremja/Documents/Kaggle/outbrain"
home: String = /Users/adremja/Documents/Kaggle/outbrain

scala> val documents_categories = sc.textFile(home + "/documents_categories.csv")
documents_categories: org.apache.spark.rdd.RDD[String] = /Users/adremja/Documents/Kaggle/outbrain/documents_categories.csv MapPartitionsRDD[21] at textFile at <console>:26

scala> documents_categories take(10) foreach println
document_id,category_id,confidence_level
1595802,1611,0.92
1595802,1610,0.07
1524246,1807,0.92
1524246,1608,0.07
1617787,1807,0.92
1617787,1608,0.07
1615583,1305,0.92
1615583,1806,0.07
1615460,1613,0.540646372

然而,当我在 Zeppelin 中尝试 运行 时,出现错误

java.lang.NoClassDefFoundError: Could not initialize class org.apache.spark.rdd.RDDOperationScope$
  at org.apache.spark.SparkContext.withScope(SparkContext.scala:679)
  at org.apache.spark.SparkContext.textFile(SparkContext.scala:797)
  ... 46 elided

你知道问题出在哪里吗?

我有来自自制软件的 spark 2.0.1(我在 zeppelin-env.sh 中将其链接为 SPARK_HOME)和来自 Zeppelin 网站的 Zeppelin 0.6.2 二进制文件。

好的,看来我找到了解决方案。我从 zeppelin 的 lib 文件夹中删除了:

  • jackson-annotations-2.5.0.jar
  • jackson-core-2.5.3.jar
  • jackson-databind-2.5.3.jar

并将其替换为 spark 使用的 2.6.5 版本。

它现在可以工作了,但我不知道我是否没有破坏任何其他东西。

似乎是 spark 版本的问题,zeppelin 0.6.2 支持 spark 1.6,而我们 运行 spark 支持 2.0 版本。所以罐子可能不兼容。