使用错误的 Scala 版本创建 Spark 应用程序

Creating Spark application using wrong Scala version

我按照此处的说明进行操作:https://spark.apache.org/docs/latest/quick-start.html 创建一个简单的应用程序,它将 运行 在本地独立 Spark 构建上。

在我的系统中,我有 Scala 2.9.2 和 sbt 0.13.7。 当我在 simple.sbt 中写入以下内容时:

scalaVersion := "2.9.2"

在我使用 sbt package 之后,我得到了错误: sbt.ResolveException: unresolved dependency: org.apache.spark#spark-core_2.9.2;1.3.1: not found

然而,当我在 simple.sbt 中写入时:

scalaVersion := "2.10.4"

sbt 运行s 成功并且应用程序 运行s 在 Spark 上正常。

这怎么会发生,因为我的系统上没有 scala 2.10.4?

Scala 不是一个包,它是一个在 Java 运行 时间之上执行的库。同样,Scala 编译器 scalac 运行s 在 Java 运行 时间之上。在您的 "system" 中安装一个 Scala 版本是为了方便,但不是必需的。

因此,完全有可能从一个版本的 Scala (2.9.2) 启动 sbt,但使用完全不同版本的 Scala ( 2.10.x) 通过传递适当的标志,例如 -classpath.

参见:Can java run a compiled scala code?

正如@noahlz 所说,您的系统上不需要 Scala,因为 sbt 会为您获取它。

您遇到的问题是 Scala 2.9.2 没有 spark-core 版本 1.3.1

据我在 Maven Central 中看到的(搜索 spark-core),Scala 2.10 和 2.11 只有 spark-core 的构建。

因此我建议您使用此设置:

scalaVersion := "2.11.6"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.3.1"

如果出于某种原因这对您不起作用,请使用 Scala 2.10.5:

scalaVersion := "2.10.5"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.3.1"