簡體   English   中英

如何加載java屬性文件並在Spark中使用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM