2017-05-17 20 views
10

spark-dariaプロジェクトはuploaded to Spark Packagesで、sbt-spark-package pluginの別のSBTプロジェクトでspark-dariaコードにアクセスしています。SBTで生成されたスパークパッケージのJARファイルを含むfat JAR

sbt assemblyによって生成されたfat JARファイルには、build.sbtファイルに次のコードを含めてspark-dariaを含めることができます。

spDependencies += "mrpowers/spark-daria:0.3.0" 

val requiredJars = List("spark-daria-0.3.0.jar") 
assemblyExcludedJars in assembly := { 
    val cp = (fullClasspath in assembly).value 
    cp filter { f => 
    !requiredJars.contains(f.data.getName) 
    } 
} 

このコードはハックのように感じます。 fat JARファイルにspark-dariaを含めるより良い方法はありますか?

N.B.私は半脂肪のJARファイルをここに作りたいと思っています。私はspark-dariaをJARファイルに含めたいと思っていますが、私はJARファイルにSparkのすべてを入れたくありません!

答えて

0

README for version 0.2.6状態次の:あなたは本当に(あなたが除外ルールを持っているなど)sparkComponentsを使用してスパークの依存関係を指定し、providedとして、それらを設定することはできませんどのような場合(デモ用など、スタンドアロンのjar)で

assemblyプラグインを正しく使用するには、spIgnoreProvided := trueを使用してください。

次に、あなたのビルド定義にこのフラグを使用して、私は次の例にspark-sql:2.2.0で行うようprovidedとしてあなたスパークの依存関係を設定する必要があります。

libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.2.0" % "provided" 

これはあなたのIDEを設定することにより、ご注意くださいなしかもしれませんコードをローカルでコンパイルして実行するために必要な依存関係の参照が長くなってしまい、必要なJARを手作業でクラスパスに追加する必要があります。私はこれをIntelliJでよくやっています。自分のマシンにSparkディストリビューションを持っていて、jarsディレクトリをIntelliJプロジェクト定義に追加しています(this questionが必要です)。

関連する問題