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

Apache spark 如何在Spark类中获取环境变量的值?,apache-spark,Apache Spark,我们在集群上执行spark作业,如下所示: export HADOOP_USER_NAME=blah spark-submit --class "com.myapp.MyClass" --master yarn --deploy-mode cluster .... 但是,当我们尝试使用访问MyClass.scala中的HADOOP\u USER\u NAME时,会得到一个空值。这可能是因为env变量没有传播到集群上运行的机器。如何解决此问题?使用Spark技巧将--conf属性设置为Spark

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

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

但是,当我们尝试使用访问
MyClass.scala
中的
HADOOP\u USER\u NAME
时,会得到一个空值。这可能是因为env变量没有传播到集群上运行的机器。如何解决此问题?

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

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

您应该使用
spark.warn.appMasterEnv
。见:

这正是我们正在做的事情。我们没有将它添加到conf中,而是将它添加到命令行选项输入到JAR-like-owner$HADOOP\u USER\u name中,我认为Spark中没有内置的机制。