私は、Apacheのスパーク2.1.0.cloudera1
インストールとClouderaのクラスタを使用しますが、私は、最新の新しいクラスを必要とするが、Apacheのスパークgitリポジトリからコミット:ClouderaのCDHクラスタで使用されているバージョンとは異なるSparkバージョンの使用方法は?
私はちょうどコピー貼り付け、ファイル全体を私のsbt Scalaのプロジェクトに
からorg.apache.spark.mllib.linalg.distributed.BlockMatrix
:しかし、私は、クラスター提供されるクラスを除外するために、SBT-アセンブリMergeStrategyを作成する方法がわかりません
org.apache.spark/spark-mllib_2.11/jars/spark-mllib_2.11-2.1.0.cloudera1.jar
新しく追加されたプロジェクトクラスを使用します。
マイsbt.buildファイル:
val sparkVersion = "2.1.0.cloudera1"
lazy val providedDependencies = Seq(
"org.apache.spark" %% "spark-core" % sparkVersion,
"org.apache.spark" %% "spark-sql" % sparkVersion,
"org.apache.spark" %% "spark-mllib" % sparkVersion
)
libraryDependencies ++= providedDependencies.map(_ % "provided")
assemblyMergeStrategy in assembly := {
case PathList("META-INF", "MANIFEST.MF") => MergeStrategy.discard
case PathList("org", "apache", "spark", "unused", "UnusedStubClass.class") => MergeStrategy.first
case _ => MergeStrategy.first
}
ありがとうございますが、新しいライブラリから1つのクラス(元のパッケージを含む)だけをコピーすることができますので、sshを使ってfat jarを送信することは避けられますか? – fpopic
そうは思わない。それはうまくいくかもしれませんが、私はそれを偶然と考えています。 –