Manera adecuada de hacer un tarro de grasa con SBT
Necesito un Fat Jar con Spark porque estoy creando un nodo personalizado para Knime. Básicamente es un frasco autónomo ejecutado dentro de Knime y supongo que un Frasco gordo es la única forma de generar un trabajo Spark local. Eventualmente, continuaremos enviando un trabajo a un clúster remoto, pero por ahora necesito que se genere de esta manera.
Dicho esto, hice un Fat Jar usando esto:https://github.com/sbt/sbt-assembly
Hice un proyecto sbt vacío, incluí Spark-core en las dependencias y ensamblé el Jar. Lo agregué al manifiesto de mi nodo Knime personalizado e intenté generar un trabajo simple (pararelizar una colección, recopilarla e imprimirla). Comienza pero me sale este error:
No se ha encontrado ninguna configuración para la clave 'akka.version'
No tengo idea de cómo resolverlo.
Editar: esta es mi 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
}
He encontrado esta estrategia de fusión para Spark en algún lugar de Internet, pero no puedo encontrar la fuente en este momento.