Apache spark 为什么ApacheSpark工件名称包含scala版本

Apache spark 为什么ApacheSpark工件名称包含scala版本,apache-spark,Apache Spark,在maven存储库中,ApacheSpark版本1.4.1有两种版本 spark-*_2.10和spark-*_2.11 这些似乎是Scala版本。如果我使用java发行版部署ApacheSpark,以下哪一项是首选的?我认为如果您使用java,这并不重要,因为字节码应该足够接近。spark当前的默认值是2.10,但如果选择2.11,可能会获得一些小的收益但,最终我认为这无关紧要 正如zero323提到的,2.11可能不完全支持某些领域,因此正如我前面所说,2.10是目前的默认版本,可能是最安全

在maven存储库中,ApacheSpark版本1.4.1有两种版本

spark-*_2.10和spark-*_2.11


这些似乎是Scala版本。如果我使用java发行版部署ApacheSpark,以下哪一项是首选的?

我认为如果您使用java,这并不重要,因为字节码应该足够接近。spark当前的默认值是2.10,但如果选择2.11,可能会获得一些小的收益,最终我认为这无关紧要


正如zero323提到的,2.11可能不完全支持某些领域,因此正如我前面所说,2.10是目前的默认版本,可能是最安全的路线。

Scala SDK在主要版本(例如2.10和2.11)之间不兼容二进制代码。如果您有将与Spark一起使用的Scala代码,并且该代码是针对Scala的特定主要版本(例如2.10)编译的,那么您将需要使用Spark的兼容版本。例如,如果您正在Scala中编写Spark 1.4.1代码,并且您正在使用2.11.4编译器,那么您应该使用Spark 1.4.1_2.11


如果您没有使用Scala代码,那么Spark 1.4.1_2.10和Spark 1.4.1_2.11之间应该没有功能上的差异(如果有,很可能是一个bug)。唯一的区别应该是用于编译Spark和相应库的Scala编译器的版本

嗯,我不认为这不重要。例如,Scala 2.11/Spark 1.4.1不支持JDBC组件,如果你问我:)@zero323澄清:)缺少功能听起来像个bug。2.10和2.11不应该是小版本吗?通常第一个数字是主要版本,第二个数字是次要版本。不适用于Scala。例如,2.10.1和2.10.2是两个不同的二进制兼容的次要版本。