如何为我的Spark程序选择Scala版本



我正在构建我的第一个火花应用程序,并使用Idea开发。

在我的群集中,Spark的版本为2.1.0,Scala的版本为2.11.8。

http://spark.apache.org/downloads.html告诉我:"启动版2.0,Spark是用Scala 2.11构建的。Scala2.10用户应下载Spark Source软件包,并使用Scala 2.10支持构建"。

所以这是我的问题:" Scala 2.10用户应该下载Spark Source软件包并使用Scala 2.10支持"的含义是什么?为什么不使用Scala 2.1.1版本?

另一个问题:我可以选择哪种版本的Scala?

首先关于"为什么"。

这个主题存在的原因是Scala版本不是(通常是刺激)二进制兼容的,尽管大多数情况下,源代码是兼容的。

因此,您可以使用Scala 2.10 source 并将其编译为2.11.x或2.10.x版本。但是2.10.x 编译的二进制文件(罐)无法在2.11.x环境中运行。

您可以了解有关该主题的更多信息。

火花发行

因此,您提到的Spark软件包是为Scala 2.11.x运行时间构建的。

这意味着您无法在使用Spark.apache.org构建的Spark的群集/Spark实例上运行Scala 2.10.x罐子。

有效的是:

  • 您为Scala 2.11.x编译罐子,并保持相同的火花
  • 您为Scala 2.10重新编译火花,并保持罐子

您的选择是什么

为Scala 2.11而不是2.10编译自己的罐子通常比在本身中编译火花要容易得多(很多依赖性要正确)。

通常,您的Scala代码是使用SBT构建的,SBT可以针对特定的Scala版本,例如,请参见此线程。这是指定的问题:

scalaVersion in ThisBuild := "2.10.0"

您也可以使用SBT进行"交叉构建",也就是说,为不同的Scala版本构建不同的罐子。

crossScalaVersions := Seq("2.11.11", "2.12.2")

如何选择Scala版本

好吧,这是基于"一种"意见。我的建议是:选择与您的生产Spark群集相匹配的Scala版本。

如果您的生产火花是2.3从https://spark.apache.org/downloads.html下载,则如他们所说,它使用Scala 2.11,这也应该使用。在我看来,使用其他任何东西,只需在道路上敞开大门。

坚持您的生产所需的东西。

最新更新