Ich möchte die Spark-Argumente wie Eingabedatei, Ausgabedatei in eine Java-Eigenschaftendateien speichern und diese Datei in Spark Driver übergeben. Ich verwende Spark-Submit zum Übergeben des Jobs, konnte jedoch keinen Parameter zum Übergeben der Eigenschaftendatei finden. Hast du irgendwelche Vorschläge?Wie Java-Eigenschaftendatei laden und in Spark verwenden?
Antwort
hier fand ich eine Lösung:
Requisiten Datei: (mypropsfile.conf) // Anmerkung: Präfix Ihr Schlüssel mit "Funken." sonst werden Requisiten ignoriert.
spark.myapp.input /input/path
spark.myapp.output /output/path
Start
$SPARK_HOME/bin/spark-submit --properties-file mypropsfile.conf
wie in Code aufzurufen :(innerhalb Code)
sc.getConf.get("spark.driver.host") // localhost
sc.getConf.get("spark.myapp.input") // /input/path
sc.getConf.get("spark.myapp.output") // /output/path
+ zusätzliche Eigenschaften laden zu gleichen Trick funktioniert für funken Shell .... –
Danke :-) Es ein Vergnügen gearbeitet! – diplomaticguru
@ ramisetty.vijay: die Dateierweiterung .conf werden sollte oder wir könnten .properties auch benutzen? – Shankar
der vorherigen Antwort Ansatz die Einschränkung hat, dass jede Eigenschaft sollte beginnen mit spark
in Eigenschaftendatei -
z.B.
spark.myapp.input
spark.myapp.output
Wenn nehme an, Sie eine Eigenschaft haben, die nicht mit spark
startet:
job.property:
app.name = xyz
$SPARK_HOME/bin/spark-submit --properties-file job.property
Spark alle Eigenschaften ignorieren hat keinen Präfix spark.
mit Nachricht:
Warnung: Ignorieren nicht-Funken Config Eigenschaft: app.name = test
Wie ich Eigenschaftendatei in Anwendung des Fahrers und Testamentsvollstrecker verwalten:
${SPARK_HOME}/bin/spark-submit --files job.properties
Java-Code für den Zugriff auf die Cachedatei (Job.Eigenschaften):
import java.util.Properties;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.spark.SparkFiles;
//Load file to propert object using HDFS FileSystem
String fileName = SparkFiles.get("job.properties")
Configuration hdfsConf = new Configuration();
FileSystem fs = FileSystem.get(hdfsConf);
//THe file name contains absolute path of file
FSDataInputStream is = fs.open(new Path(fileName));
Properties prop = new Properties();
//load properties
prop.load(is)
//retrieve properties
prop.getProperty("app.name");
Wenn Sie (dev/test/prod)
liefern dann APP_ENV benutzerdefinierte Java-Umgebungsvariable in spark-submit
umgebungsspezifischen Eigenschaften haben:
${SPARK_HOME}/bin/spark-submit --conf \
"spark.driver.extraJavaOptions=-DAPP_ENV=dev spark.executor.extraJavaOptions=-DAPP_ENV=dev" \
--properties-file dev.property
Ersetzen Sie Ihren Fahrer oder Testamentsvollstrecker Code:
//Load file to propert object using HDFS FileSystem
String fileName = SparkFiles.get(System.getProperty("APP_ENV")+".properties")
haben Sie diese Option müde: --prop schaften-Datei FILE Pfad zu einer Datei, aus der –