Spark 2.2.0 的兼容 Scala 版本?

Posted

技术标签:

【中文标题】Spark 2.2.0 的兼容 Scala 版本?【英文标题】:Compatible Scala version for Spark 2.2.0? 【发布时间】:2018-03-11 15:58:20 【问题描述】:

哪个 Scala 版本适用于 Spark 2.2.0? 我收到以下错误:

线程“main”中的异常 java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps;

【问题讨论】:

scala test 会发生这种情况吗? 我已经修复了这个错误,现在想出了一个新错误。通过在 build.sbt 中添加依赖项来消除该错误 我仍然收到错误,我认为是版本冲突,但尝试了所有方法,但仍然没有成功。 类似问题here name := "Scala-Spark" 版本 := "1.0" scalaVersion := "2.11.8" // mvnrepository.com/artifact/org.apache.spark/spark-core_2.10 libraryDependencies += "org.apache.spark" % "spark-core_2 .11" % "2.2.0" 复制并粘贴到 build.sbt 中。它肯定会起作用。 【参考方案1】:

来自文档here:

Spark 可在 Java 8+、Python 2.7+/3.4+ 和 R 3.1+ 上运行。对于 Scala API, Spark 2.2.0 使用 Scala 2.11。您将需要使用兼容的 Scala 版本 (2.11.x)。

【讨论】:

【参考方案2】:

默认情况下,Spark 2.2.0 是为与 Scala 2.11 一起构建和分发的。要在 Scala 中编写应用程序,您需要使用兼容的 Scala 版本(例如 2.11.X)。你的 scala 版本可能是 2.12.X。这就是它抛出异常的原因。

【讨论】:

【参考方案3】:

要为您的 spark 应用程序选择合适的 scala 版本,可以在目标服务器上运行 spark-shell。欢迎消息中包含所需的 scala 版本:

欢迎来到
      ____ __
     / __/__ ___ _____/ /__
    _\ \/ _ \/ _ `/ __/ '_/
   /___/ .__/\_,_/_/ /_/\_\ 版本 2.2.0.2.6.3.0-235
      /_/

使用 Scala 版本 2.11.8(Java HotSpot(TM) 64 位服务器 VM,Java 1.8.0_152)

在我的 Spark 分配中是 2.11.8

MVN 存储库中也有一些页面包含用于 spark 分发的 scala 版本:

https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.11

https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.12

【讨论】:

【参考方案4】:

Spark 2.2.0 需要 Java 8+ 和 scala 2.11。以上就是版本信息。

但是,查看您的错误“线程“main”java.lang.NoSuchMethodError: 中的异常:”,您的 Spark 似乎无法找到驱动程序类。

也许你应该看这个方向而不是版本。

【讨论】:

以上是关于Spark 2.2.0 的兼容 Scala 版本?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Spark-2.2.0 - Scala-2.11.8 上运行单元测试(scalatest)

Spark管理与开发

spark报错class no found scala/collection/GenTraversableOnece$class已解决

eclipse安装scala插件及创建maven工程

Spark 2.2 空安全左外连接空指针异常

spark2.1对应kafka哪个版本