2017-06-02 348 views
1

我們在集羣上執行火花的工作,像這樣:如何在Spark類中獲取環境變量的值?

export HADOOP_USER_NAME=blah 
spark-submit --class "com.myapp.MyClass" --master yarn --deploy-mode cluster .... 

可是當我們嘗試使用System.getenv訪問HADOOP_USER_NAMEMyClass.scala我們得到了一個空值。也許這是因爲env變量沒有傳播到羣集上運行的機器上。我們如何解決這個問題?

回答

0

使用火花招與spark.*前綴設置--conf屬性和訪問它作爲使用SparkConfspark.conf配置接口的任何其他屬性。

spark-submit --conf spark.HADOOP_USER_NAME=$HADOOP_USER_NAME ... 
+0

這幾乎是我們正在做的。而不是在conf中添加它,我們添加到命令行選項輸入到我們的JAR,如-owner $ HADOOP_USER_NAME – morpheus

+0

我認爲Spark中沒有內置機制。 –