2017-12-10 2 views
1

Ich habe eine typsichere Konfiguration application.conf im Ordner src/main/resources, der standardmäßig geladen wird.kann die Typesafe-Konfiguration auf der Commandline in spark nicht überschreiben

--conf spark.driver.extraJavaOptions=-DsomeValue="foo" 

jedoch eine komplett neue Angabe, das heißt zwingende application.conf Datei wie:

Ein einzelner Wert kann durch Angabe überschrieben werden

spark-submit \ 
    --class my.Class \ 
    --master "local[2]" \ 
    --files foo.conf \ 
    --conf spark.driver.extraClassPath="-Dconfig.file=file:foo.conf" \ 
    --conf spark.driver.extraJavaOptions=-Dvalue="abcd" \ 
    job.jar 

wird foo.conf nicht geladen werden. Stattdessen wird die ursprüngliche Datei aus dem Ressourcenordner geladen. Die Tricks von: Using typesafe config with Spark on Yarn zu versuchen, hat auch nicht geholfen.

bearbeiten

Overriding multiple config values in Typesafe config when using an uberjar to deploy scheint die Antwort auf Ebene (ohne Funken) Programme. Die Frage bleibt, wie man das zum Funken bringt.

auch vorbei:

--conf spark.driver.extraClassPath="-Dconfig.resource=file:foo.conf" 
--conf spark.driver.extraClassPath="-Dconfig.resource=foo.conf" 

nicht meine Konfiguration über die Befehlszeile zu laden.

Obwohl, entsprechend der Dokumentation.

https://github.com/lightbend/config Für Anwendungen mit Anwendung {conf, JSON- Eigenschaften}, Systemeigenschaften können eine andere Konfiguration Quelle Kraft verwendet werden (zB von der Kommandozeile -Dconfig.file = path/to/config-Datei):

  • config.resource spezifiziert eine Ressourcenname - keine Basisnamen, dh nicht application.conf Anwendung
  • config.file ein Dateisystem-Pfad gibt, wieder sollte es die Erweiterung enthalten, kein Basisnamen sein
  • config.url eine URL

Diese Systemeigenschaften einen Ersatz für Anwendung angeben angibt. {Conf, json, Eigenschaften}, keine Addition. Sie wirken sich nur auf Apps aus, die die Standardkonfiguration ConfigFactory.load() verwenden. In der Ersetzungskonfigurationsdatei können Sie die Include- "Anwendung" verwenden, um die ursprüngliche Standardkonfigurationsdatei einzuschließen; Nach der Include-Anweisung könnten Sie mit bestimmte Einstellungen überschreiben.

sollte es mit diesen Parametern möglich sein.

Antwort

1
spark-submit \ 
    --class my.Class \ 
    --master "local[2]" \ 
    --files foo.conf \ 
    --conf spark.driver.extraJavaOptions="-Dvalue='abcd' -Dconfig.file=foo.conf" \ 
    target/scala-2.11/jar-0.1-SNAPSHOT.jar 

von spark.driver.extraClassPath zu spark.driver.extraJavaOptions Ändern tut den Trick

Verwandte Themen