我们在群集上执行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变量没有传播到集群上运行的机器。我们如何解决这个问题?
答案 0 :(得分:0)
使用Spark技巧将--conf
属性设置为spark.*
前缀,并使用SparkConf
或spark.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