2017-05-10 4 views
6

私は最初のスパークアプリケーションを構築しています。スカラ/スパークバージョンの互換性

http://spark.apache.org/downloads.htmlは、Spark 2.xがScala 2.11に対して構築されていることを示しています。スパークサイト上で2.11が正確に何を意味する: - 私は2.11.0からバージョンを見ていScalaのサイトhttps://www.scala-lang.org/download/all.html

だからここ2.11.11

は私の質問です。 2.11.0 - 2.11.11の範囲のScalaバージョンですか?

別の質問:最新のScala 2.12.2を使用してSparkアプリケーションをビルドすることはできますか?私はScalaが下位互換性があると仮定しているので、Scalaで構築されたSparkライブラリは、Scala 2.12.1アプリケーションで2.11.xを使用/呼び出しできると言っています。私は正しいですか?

答えて

14

Scalaは、あなたが前提としている下位互換性がありません。 scala 2.12の下でsparkを再構築しない限り、Sparkでscala 2.11を使用する必要があります(最新のScalaバージョンを使用したいが、すべての作業を行うためにはもっと多くの作業が必要です)。

互換性を考慮すると、ソースの互換性とバイナリ互換性の両方を考慮する必要があります。 Scalaはソースの下位互換性がある傾向がありますので、新しいバージョンでjarを再構築できますが、バイナリの下位互換性ではないため、新しいバージョンのコードで古いバージョンで構築されたjarを使用することはできません。

これはメジャーバージョンなので、scala 2.10,2.11,2.12などはすべてメジャーバージョンで、バイナリ互換ではありません(ソース互換性がある場合でも)。

それはあなたが表示されます。この理由のためである(これも互換性がありますプラス将来の2.11改訂版)2.11.11 - 互換性が維持されているものの、主要なバージョンの中で、そうScalaの2.11は、すべてのバージョン2.11.0と互換性がありますほとんどのScalaライブラリは、主要なScalaバージョンごとに別々のリリースを持っています。使用しているライブラリが、使用しているバージョンのjarファイルを提供していること、およびそのjarファイルを使用していて、別のバージョンのjarファイルを使用していないことを確認する必要があります。 SBTを使用する場合は、%%は正しいバージョンの選択を処理しますが、mavenでは正しいアーチファクト名を使用する必要があります。バージョンには通常、jarが構築されているスカラのバージョンを参照して、_2.10、_2.11、および_2.12が付加されています。

+0

Spark 2.0は、必要なモデルの保存と読み込み機能を備えた最初のバージョンであるため、少なくともSpark 2.0を使用したいと考えています。だからScalaのどのバージョンが必要ですか?これはどこで調べられますか? –

+0

@PaulReiners Scala 2.11の最新バージョン2.1.1が配布されています。 Scala 2.12が必要な場合は、そのScalaバージョンのソースからsparkをビルドすることができます。 sparkのホームページには、スカラのバージョンがいくつかの最新のリリースについて記載されていますが、私は公式の互換性テーブルを見ていません。もちろん、パッケージ名を見ることはできますが、互換性のあるScalaバージョンをアーティファクトIDに追加するという標準的な規則に従います。 – puhlen