当前位置: 首页 > 知识库问答 >
问题:

Scala/Spark版本兼容性

南宫凯康
2023-03-14

我正在构建我的第一个spark应用程序。

http://spark.apache.org/downloads.html告诉我火花2。x是根据Scala 2.11构建的。

在Scala网站上https://www.scala-lang.org/download/all.html我看到的版本是2.11.0-2.11.11

所以我的问题是:火花网站上的2.11到底是什么意思。它是2.11.0 - 2.11.11范围内的任何Scala版本吗?

另一个问题:我可以使用最新的Scala 2.12.2构建Spark应用程序吗?我假设Scala是向后兼容的,所以使用Scala构建的Spark库是2.11。x可以在Scala 2.12.1应用程序中使用/调用。我说得对吗?

共有3个答案

徐承载
2023-03-14

我使用了这些版本的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提到的版本。

宰父玄天
2023-03-14

对于任何想要启动跳转的人来说,这是我使用的版本控制对。

scalaVersion := "2.11.12"

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "2.3.2",
  "org.apache.spark" %% "spark-sql" % "2.3.2"
)
程景胜
2023-03-14

正如您所设想的,Scala不向后兼容。您必须将scala 2.11与spark一起使用,除非您在scala 2.12下重建spark(如果您想使用最新的scala版本,这是一个选项,但需要更多的工作才能使一切正常工作)。

在考虑兼容性时,需要考虑源兼容性和二进制兼容性。Scala确实倾向于源代码向后兼容,因此您可以在较新版本下重建jar,但它不是二进制向后兼容的,因此您不能使用旧版本构建的jar以及新版本的代码。

这只是主要版本,所以scala2.10, 2.11, 2.12等都是主要版本,并且不兼容二进制(即使它们兼容源)。在一个主要版本中,虽然保持兼容性,所以Scala 2.11与所有版本都兼容2.11.0 - 2.11.11(加上任何未来的2.11版本也将兼容)

正是由于这个原因,您将看到大多数Scala库对于每个主要的Scala版本都有单独的版本。您必须确保您使用的任何库都为您正在使用的版本提供了一个jar,并且您使用该jar而不是其他版本的jar。如果您使用SBT%%将为您选择正确的版本,但对于maven,您需要确保使用正确的工件名称。这些版本通常以_2.10、_2.11和_2.12作为前缀,表示构建jar的scala版本。

 类似资料:
  • 哪个Scala版本适用于Spark 2.2。0 ? 我发现以下错误: 异常线程"main"java.lang.NoSuchMultiodError: scala。Predef$. refArrayOps([Ljava/lang/Object;)Lscala/集合/可变/ArrayOps;

  • 这本书讲述的是 Swift 5.1,它是 Xcode 11 中包含的默认版本。你可以使用 Xcode 11 来编译用 Swift 5.1、Swift 4.2 或 Swift 4 写的代码。 当你使用 Xcode 11 编译 Swift 4 和 Swift 4.2 代码时,大部分 Swift 5.1 的功能是可用的。也就是说,下面的变更仅对 Swift 5.1 或后续版本生效: 返回不透明类型的函数

  • 支持的版本 主版本 PHP兼容性 初始发行 支持 PHPUnit 9 PHP 7.3, PHP 7.4 2020年2月7日 支持将于2022年2月4日结束 PHPUnit 8 PHP 7.2, PHP 7.3, PHP 7.4 2019年2月1日 支持将于2021年2月5日结束 之前的版本 主版本 PHP兼容性 初始发行 支持 PHPUnit 7 PHP 7.1, PHP 7.2, PHP 7.3

  • 我在pom上使用下面的代码。xml,但由于出现错误,我无法启动应用程序。我不想降级spring boot starter父版本。有什么解决办法吗? 我得到了贝沃的错误 组织。springframework。豆。工厂BeanCreationException:创建名为“configurationPropertiesBeans”的bean时出错,该bean在类路径资源[org/springframew

  • 我正在使用生成cacerts。 然后我使用,但我会遇到这样的例外: 这是兼容性问题吗?使用一个版本的java生成的Cacert是否与另一个版本的java不兼容?

  • 我有一个运行在java 1.6上的客户机,它通过web服务与运行在java 1.8上的服务器通信。 1)我想知道我的客户是否可以支持任何SSL/TLS版本? 2)如果我无法访问远程服务器,如何发现我的客户端运行在哪个SSL/TLS版本上? 3)我可以从java客户端应用程序强制使用TLS/SSL版本吗? 任何帮助都将是伟大的!谢谢你!