在本地Spark应用程序错误" scala.Option中使用远程独立群集;本地班级不兼容"

时间:2016-01-15 09:52:36

标签: scala apache-spark

我设置了一个带有多个节点的远程Spark独立集群。为此我下载了这个Spark版本:spark-1.5.1-bin-hadoop1(因为我们有一个旧的Hadoop 1服务正在运行)

在我当地的Scala计划中,我定义了主人的路径:

val conf = new SparkConf().setMaster("spark://node01.kdlan:7078").setAppName("My App")
val sc = new SparkContext(conf)

启动本地本地程序时,我在日志中看到此错误:

16/01/15 10:35:34 WARN ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkMaster@node01.kdlan:7078] has failed, address is now gated for [5000] ms. Reason: [Disassociated] 

在远程主服务器上,我可以在Spark日志文件中看到:

16/01/15 10:35:34 WARN ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkDriver@myip:43288] has failed, address is now gated for [5000] ms. Reason is: [scala.Option; local class incompatible: stream classdesc serialVersionUID = -114498752079829388, local class serialVersionUID = -2062608324514658839].
16/01/15 10:35:34 INFO Master: myip:43288 got disassociated, removing it.

在某处我读到Spark依赖项应标记​​为'提供'我在build.sbt中做了。没有定义其他库依赖项。

scalaVersion := "2.11.7"
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "1.5.1" % "provided"

Spark版本匹配(1.5.1)和Scala主版本(2.11),那么不兼容的Scala Option类来自何处以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

此答案归功于mark91

发生此错误的原因是,您可以从Spark主页下载的预编译Spark发行版是使用Scala 2.10编译的 - 因此scala.Option类上的版本不匹配。

如果您想使用Scala 2.11,那么您必须自己编译。 Spark主页上有一个源代码包,您可以为此下载。它也有信息how to compile

Spark主页上有这个说明,但我错过了。

  

注意:Scala 2.11用户应该下载Spark源包   使用Scala 2.11支持构建。