首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Scala/Spark版本兼容性

Scala/Spark版本兼容性
EN

Stack Overflow用户
提问于 2017-05-10 11:53:20
回答 3查看 16.9K关注 0票数 12

我正在构建我的第一个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应用程序中使用/调用。我说的对吗?

EN

回答 3

Stack Overflow用户

发布于 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版本。

票数 31
EN

Stack Overflow用户

发布于 2020-01-05 16:43:05

对于任何想要快速入门的人来说,这是我使用的版本控制对。

代码语言:javascript
运行
复制
scalaVersion := "2.11.12"

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "2.3.2",
  "org.apache.spark" %% "spark-sql" % "2.3.2"
)
票数 0
EN

Stack Overflow用户

发布于 2020-03-08 21:21:58

我使用了Scala和Spark的这些版本,它可以很好地满足我的需求:

代码语言:javascript
运行
复制
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提到的版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43883325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档