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

时间:2015-04-27 15:25:21

标签: scala apache-spark sbt

我按照这里的说明进行操作: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成功运行,应用程序在Spark上运行正常。

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

2 个答案:

答案 0 :(得分:10)

Scala不是一个包,它是一个在Java运行时之上执行的库。同样,Scala编译器scalac在Java运行时之上运行。您在"系统中安装了Scala版本的事实"是一种便利,但不是必需的。

因此,完全有可能从一个版本的Scala(2.9.2)启动sbt,但指示它使用完全不同版本的Scala(2.10.x)运行其他命令(编译)适当的标志,例如-classpath

请参阅:Can java run a compiled scala code?

答案 1 :(得分:7)

正如@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"