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

San*_*hay 4 java environment-variables emr apache-spark

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

这是火花提交作业:-

spark-submit --conf spark.executorEnv.FOO=bar --class com.amazon.Main SWALiveOrderModelSpark-1.0-super.jar
Run Code Online (Sandbox Code Playgroud)

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

System.out.println("env variable:- " + System.getenv("FOO"));
Run Code Online (Sandbox Code Playgroud)

输出是:-

env variable:- null
Run Code Online (Sandbox Code Playgroud)

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

zer*_*323 5

spark.executorEnv.[EnvironmentVariableName] 用于(强调我的):

将EnvironmentVariableName指定的环境变量添加到Executor进程中。

它在驱动程序上不可见,不包括org.apache.spark.SparkConf. 要使用它来访问它,System.getenv您必须在正确的上下文中执行此操作,例如从任务中:

sc.range(0, 1).map(_ => System.getenv("FOO")).collect.foreach(println)
Run Code Online (Sandbox Code Playgroud)
sc.range(0, 1).map(_ => System.getenv("FOO")).collect.foreach(println)
Run Code Online (Sandbox Code Playgroud)