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

Can*_*ame 4 scala sbt apache-spark

我按照这里的说明操作: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?

noa*_*hlz 10

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

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

请参阅:java可以运行已编译的scala代码吗?


Dal*_*and 7

正如@noahlz所说,你的系统上不需要Scala,因为sbt会为你取得它.

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

从我在Maven Central中可以看到的(搜索spark-core),只有spark-coreScala 2.10和2.11的版本.

因此我建议你使用这个设置:

scalaVersion := "2.11.6"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.3.1"
Run Code Online (Sandbox Code Playgroud)

如果由于任何不适合您的原因,请使用Scala 2.10.5:

scalaVersion := "2.10.5"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.3.1"
Run Code Online (Sandbox Code Playgroud)