Scala / Spark版本兼容性
我正在构建我的第一个spark应用程序.
http://spark.apache.org/downloads.html告诉我Spark 2.x是针对Scala 2.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应用程序中使用/调用2.11.x.我对么? 解决方法
正如您所假设的那样,Scala不向后兼容.你必须使用带有spark的scala 2.11,除非你在scala 2.12下重建spark(如果你想使用最新的Scala版本,这是一个选项,但需要更多工作才能使一切正常工作).
在考虑兼容性时,您需要考虑源兼容性和二进制兼容性. Scala确实倾向于向后兼容源代码,因此您可以在较新版本下重建jar,但它不是二进制向后兼容的,因此您不能使用旧版本的jar和新版本的代码. 这只是主要版本,因此scala 2.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版本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |