我按照这里的说明进行操作: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?
答案 0 :(得分:10)
Scala不是一个包,它是一个在Java运行时之上执行的库。同样,Scala编译器scalac
在Java运行时之上运行。您在"系统中安装了Scala版本的事实"是一种便利,但不是必需的。
因此,完全有可能从一个版本的Scala(2.9.2)启动sbt
,但指示它使用完全不同版本的Scala(2.10.x)运行其他命令(编译)适当的标志,例如-classpath
。
答案 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"