如何在Spark类中获取环境变量的值?

时间:2017-06-02 17:25:15

标签: apache-spark

我们在群集上执行spark作业,如下所示:

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

但是当我们尝试使用System.getenv访问HADOOP_USER_NAME中的MyClass.scala时,我们会得到一个空值。也许这是因为env变量没有传播到集群上运行的机器。我们如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用Spark技巧将--conf属性设置为spark.*前缀,并使用SparkConfspark.conf配置界面将其作为任何其他属性进行访问。

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

答案 1 :(得分:0)

您应该使用spark.yarn.appMasterEnv。看到: https://spark.apache.org/docs/latest/running-on-yarn.html