我正在构建我的第一个spark应用程序。
http://spark.apache.org/downloads.html告诉我Spark2.x是针对Scala2.11构建的。
在Scala站点https://www.scala-lang.org/download/all.html上,我看到了从2.11.0到2.11.11的版本
所以我的问题是: Spark网站上的2.11到底是什么意思。它有没有在2.11.0 - 2.11.11范围内的Scala版本?
另一个问题:我可以使用最新的Scala 2.12.2构建我的Spark应用吗?我假设Scala是向后兼容的,所以使用Scala构建的Spark库可以在Scala 2.12.1应用程序中使用/调用。我说的对吗?
发布于 2017-05-10 12:22:08
正如您所假设的,Scala不是向后兼容的。除非您在scala 2.12下重新构建spark,否则必须使用scala 2.11和spark (如果您想使用最新的Scala版本,这是一个选项,但需要更多工作才能让一切正常工作)。
在考虑兼容性时,您需要同时考虑源代码兼容性和二进制兼容性。Scala确实倾向于向后兼容源代码,因此您可以在较新的版本下重新构建您的jar,但它不是二进制向后兼容的,因此您不能将使用旧版本构建的jar与来自新版本的代码一起使用。
这只是主要版本,所以scala 2.10、2.11、2.12等都是主要版本,不是二进制兼容的(即使它们是源代码兼容的)。但是在一个主要版本中保持了兼容性,因此Scala2.11与所有版本2.11.0 - 2.11.11兼容(加上未来的任何2.11版本也将兼容)
正是由于这个原因,您将看到大多数Scala库对于每个主要的Scala版本都有单独的版本。您必须确保您使用的任何库都为您正在使用的版本提供了一个jar,并且您使用的是该jar而不是其他版本的jar。如果您使用SBT%%,将为您选择正确的版本,但使用maven时,您需要确保使用正确的工件名称。这些版本通常使用scala、_2.11和_2.12作为前缀,这指的是构建jar所针对的scala版本。
发布于 2020-01-05 16:43:05
对于任何想要快速入门的人来说,这是我使用的版本控制对。
scalaVersion := "2.11.12"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "2.3.2",
"org.apache.spark" %% "spark-sql" % "2.3.2"
)
发布于 2020-03-08 21:21:58
我使用了Scala和Spark的这些版本,它可以很好地满足我的需求:
scalaVersion := "2.12.8"
libraryDependencies += "org.apache.spark" %% "spark-hive" % "2.4.0"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.0"
有些库需要2.11版本的Scala,在这种情况下,应该使用@the775提到的版本。
https://stackoverflow.com/questions/43883325
复制相似问题