2017-11-29 6 views
1

私はSpark 2.1.0とScala 2.11.8を持つAmazon EMRを使用しています。
私はコンパイルして太ったJarを作成するのは不思議ですが、Scala 2.11.11を使用するのは大丈夫ですか?私はfat Jarを作成するとき、EMRで異なるScalaバージョンを使用してもよろしいですか?

+0

短い答えはいいえです。 –

+0

2.11.8のためにファットジャーを作りましょう。 fat jarの作成に使用すると思われるsbt-assemblyプラグインではうまくいきませんが、 'crossScalaVersions' SBT設定を使用して、2.11.8と2.11.11の両方のバージョンを指定してから' 2.11.8の助けを借りて2.11.8に切り替えてください:http://www.scala-sbt.org/1.0/docs/Cross-Build.html –

答えて

1

EMRファットジャーを正しいスカラーバージョンで構築することができる方が良い。これは難しいことではありません。私はあなたが脂肪のジャーを構築するためにsbtアセンブリを使用すると思います。この場合、あなたのbuild.sbtに次の行を追加します crossScalaVersions := Seq("2.11.8", "2.11.11")

その後のsbtシェル型reloadにこの新しい設定を有効にします。 あなたは2.11.8に対するアセンブリ脂肪ジャーにしたいとき、あなたはコマンドを次のsbtコンソールで入力します。

++ 2.11.8 
assembly 

あなたは2.11.11のためにローカルでコンパイルするか、2.11.11のための脂肪のjarを構築したいですsbtコンソールでそのバージョンに切り替えるだけです。例:

++ 2.11.11 
compile 

私はチェックして、それは私のために働いています。ここに私のsbtコンソールからのログがあります:

sbt:TestAssembly> ++ 2.11.8 
[info] Setting Scala version to 2.11.8 on 1 projects. 
[info] Reapplying settings... 
[info] Set current project to TestAssembly (in build file:/ssd2/projects/TestAssembly/) 
sbt:TestAssembly> assembly 
[info] Including from cache: scala-library-2.11.8.jar 
[info] Checking every *.class/*.jar file's SHA-1. 
[info] Merging files... 
[warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard' 
[warn] Strategy 'discard' was applied to a file 
[info] Packaging /ssd2/projects/TestAssembly/target/scala-2.11/testStep.jar ... 
[info] Done packaging. 
[success] Total time: 2 s, completed Nov 29, 2017 12:07:46 PM 
sbt:TestAssembly> ++ 2.11.11 
[info] Setting Scala version to 2.11.11 on 1 projects. 
[info] Reapplying settings... 
[info] Set current project to TestAssembly (in build file:/ssd2/projects/TestAssembly/) 
sbt:TestAssembly> assembly 
[info] Updating {file:/ssd2/projects/TestAssembly/}testassembly... 
[info] Done updating. 
[info] Compiling 2 Scala sources to /ssd2/projects/TestAssembly/target/scala-2.11/classes ... 
[info] Non-compiled module 'compiler-bridge_2.11' for Scala 2.11.11. Compiling... 
[info] Compilation completed in 13.098s. 
[info] Done compiling. 
[info] Including: scala-library-2.11.11.jar 
[info] Checking every *.class/*.jar file's SHA-1. 
[info] Merging files... 
[warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard' 
[warn] Strategy 'discard' was applied to a file 
[info] SHA-1: b0a0cc7ec39ca359187a0b24f303c376b1f2d71f 
[info] Packaging /ssd2/projects/TestAssembly/target/scala-2.11/testStep.jar ... 
[info] Done packaging. 
[success] Total time: 17 s, completed Nov 29, 2017 12:10:37 PM 
sbt:TestAssembly> 

ご覧のとおり、それぞれの場合に適切なスカラーライブラリのjarが含まれています。

+0

ありがとうございました。質問があります。私がsbt-assemblyを使ってfat Jarをビルドすると、Scala version 2.11.11を使用するとfat-jarがうまく動作します。 e.x)build.sbt、scalaVersion:= "2.11.11"。なぜこの太ったJarはスカラーバージョン2.11.8を持つEMRでうまく動作しますか?あなたはそれについて答えることができますか? – Ashe

+0

おそらくこれは主題の一部を説明することができます:https://docs.scala-lang.org/overviews/core/binary-compatibility-of-scala-releases.html –

関連する問題