2017-05-17 1 views
10

Das Spark-Daria-Projekt ist uploaded to Spark Packages und ich zugreifen Spark-Daria-Code in einem anderen SBT-Projekt mit der sbt-spark-package plugin.Ein Spark-Paket JAR-Datei in einem SBT generiert Fett JAR

Ich kann Funken-Daria in die Fett-JAR-Datei von sbt assembly mit dem folgenden Code in der Datei build.sbt generiert enthalten.

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) 
    } 
} 

Dieser Code fühlt sich an wie ein Hack. Gibt es eine bessere Möglichkeit, Spark-Daria in die fette JAR-Datei aufzunehmen?

N.B. Ich möchte hier eine halbfette JAR-Datei erstellen. Ich möchte Spark-Daria in der JAR-Datei enthalten, aber ich möchte nicht alle Spark in der JAR-Datei!

Antwort

0

Die README for version 0.2.6 besagt Folgendes:

In jedem Fall, in dem man wirklich nicht Funken Abhängigkeiten mit sparkComponents (zB Sie haben Ausschlussregeln) und konfigurieren Sie sie als provided (zB Standalone-Glas für eine Demo) angeben , können Sie spIgnoreProvided := true verwenden, um das assembly Plugin richtig zu verwenden.

Sie sollten dann diesen Flag auf Ihrer Builddefinition verwenden und stellen Sie Ihre Spark-Abhängigkeiten als provided wie ich mit spark-sql:2.2.0 im folgende Beispiel zu tun:

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

Bitte beachten Sie, dass durch diese IDE-Einstellung nicht kann Sie verfügen nicht mehr über die erforderlichen Abhängigkeiten, um den Code lokal zu kompilieren und auszuführen. Dies würde bedeuten, dass Sie die erforderlichen JARs manuell dem Klassenpfad hinzufügen müssten. Ich mache das oft auf IntelliJ, was ich mache, ist eine Spark-Distribution auf meinem Rechner und das Hinzufügen seines Verzeichnisses jars zur IntelliJ-Projektdefinition (this question kann Ihnen dabei helfen, falls Sie es brauchen).

Verwandte Themen