【问题标题】:Using remote standalone cluster in local Spark application error "scala.Option; local class incompatible"在本地 Spark 应用程序错误“scala.Option;本地类不兼容”中使用远程独立集群
【发布时间】:2016-01-15 19:22:26
【问题描述】:

我设置了一个包含多个节点的远程 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类是从哪里来的,如何解决呢?

【问题讨论】:

  • 你是如何安装 Spark 的?因为默认的 Spark 安装使用的是 Scala 2.10。如果您确实想使用 Scala 2.11,您必须使用 Scala 2.11 正确编译 Spark 并安装您的编译版本。
  • @mark91 我只是从 Spark 主页下载了 zip "spark-1.5.1-bin-hadoop1.tgz" - 我自己没有编译它。感谢您的提示,这看起来很有希望。我会告诉我是否成功。

标签: scala apache-spark


【解决方案1】:

此答案归功于mark91

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

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

Spark 主页上有这个注释,但是我错过了。

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

【讨论】:

    猜你喜欢
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多