Proper Weg, um ein Spark Fat Jar mit SBT zu machen

Ich brauche ein Fat Jar mit Spark, da ich einen benutzerdefinierten Knoten für Knime erstelle. Grundsätzlich ist es ein in sich geschlossenes Glas, das in Knime ausgeführt wird, und ich gehe davon aus, dass ein Fat Jar die einzige Möglichkeit ist, einen lokalen Spark Job zu erzeugen. Irgendwann werden wir einen Auftrag an einen Remote-Cluster senden, aber jetzt muss er auf diese Weise erstellt werden.

Das heißt, ich habe ein Fat Jar daraus gemacht:https: //github.com/sbt/sbt-assembl

Ich habe ein leeres sbt-Projekt erstellt, Spark-Core in die Abhängigkeiten aufgenommen und das Jar zusammengestellt. Ich habe es zum Manifest meines benutzerdefinierten Knime-Knotens hinzugefügt und versucht, einen einfachen Job zu erzeugen (eine Sammlung pararellisieren, sammeln und drucken). Es beginnt, aber ich bekomme diesen Fehler:

Keine Konfigurationseinstellung für Schlüssel 'akka.version' gefunden

Ich habe keine Ahnung, wie ich es lösen soll.

Bearbeiten: das ist meine build.sbt

name := "SparkFatJar"

version := "1.0"

scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % "1.3.0"
)


libraryDependencies +=  "com.typesafe.akka" %% "akka-actor" % "2.3.8"

assemblyJarName in assembly := "SparkFatJar.jar"

assemblyMergeStrategy in assembly := {
  case PathList("META-INF", xs @ _*) => MergeStrategy.discard
  case x => MergeStrategy.first
}

Ich habe diese Mergestrategie für Spark irgendwo im Internet gefunden, aber ich kann die Quelle gerade nicht finden.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage