无法在Spark应用程序中设置环境变量

时间:2017-11-28 13:58:46

标签: java apache-spark environment-variables emr

我正在尝试为我的火花应用程序设置环境变量,以本地模式运行。

这是火花提交工作: -

spark-submit --conf spark.executorEnv.FOO=bar --class com.amazon.Main SWALiveOrderModelSpark-1.0-super.jar

但是,当我尝试访问此内容时: -

System.out.println("env variable:- " + System.getenv("FOO"));

输出为: -

env variable:- null

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

spark.executorEnv.[EnvironmentVariableName] is used to(强调我的):

  

将EnvironmentVariableName指定的环境变量添加到执行者进程

除了org.apache.spark.SparkConf之外,它在驱动程序中不可见。要使用System.getenv访问它,您可以在正确的上下文中执行此操作,例如从任务:

sc.range(0, 1).map(_ => System.getenv("FOO")).collect.foreach(println)
bar

答案 1 :(得分:1)

您正在使用 <map name="surname" type="Sitecore.Owin.Authentication.Services.DefaultClaimToPropertyMapper, Sitecore.Owin.Authentication" resolve="true"> <data hint="raw:AddData"> <source name="surname" /> <target name="Surname" /> </data> </map> 设置Spark环境变量。您还必须使用user.Profile["Surname"]来获取它

SparkConf