[英]How to load java properties file and use in Spark?
我想將Spark參數(如輸入文件,輸出文件)存儲到Java屬性文件中,並將該文件傳遞給Spark Driver。 我使用spark-submit提交作業但找不到傳遞屬性文件的參數。 你有什么建議嗎?
在這里,我找到了一個解
props文件 :(mypropsfile.conf)// 注意:用“spark”鍵前綴你的鍵。 否則道具將被忽略。
spark.myapp.input /input/path
spark.myapp.output /output/path
發射
$SPARK_HOME/bin/spark-submit --properties-file mypropsfile.conf
如何調用代碼 :(內部代碼)
sc.getConf.get("spark.driver.host") // localhost
sc.getConf.get("spark.myapp.input") // /input/path
sc.getConf.get("spark.myapp.output") // /output/path
前一個答案的方法有限制,即每個屬性應該從屬性文件中的spark
開始 -
例如
spark.myapp.input
spark.myapp.output
如果假設你有一個不以spark
開頭的屬性:
job.property:
app.name = XYZ
$SPARK_HOME/bin/spark-submit --properties-file job.property
Spark會忽略所有沒有前綴spark.
屬性spark.
有消息:
警告:忽略非spark配置屬性:app.name = test
我如何在應用程序的驅動程序和執行程序中管理屬性文件:
${SPARK_HOME}/bin/spark-submit --files job.properties
用於訪問緩存文件的Java代碼(job.properties) :
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;
import java.io.InputStream;
import java.io.FileInputStream;
//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));
// Or use java IO
InputStream is = new FileInputStream("/res/example.xls");
Properties prop = new Properties();
//load properties
prop.load(is)
//retrieve properties
prop.getProperty("app.name");
如果您有特定於環境的屬性(dev/test/prod)
那么在spark-submit
提供APP_ENV自定義java環境變量:
${SPARK_HOME}/bin/spark-submit --conf \
"spark.driver.extraJavaOptions=-DAPP_ENV=dev spark.executor.extraJavaOptions=-DAPP_ENV=dev" \
--properties-file dev.property
替換您的驅動程序或執行程序代碼:
//Load file to propert object using HDFS FileSystem
String fileName = SparkFiles.get(System.getProperty("APP_ENV")+".properties")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.