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

Unable to set Environment Variables in Spark Application

我正在尝试为我的 spark 应用程序设置环境变量,运行 在 local 模式下。

这是 spark-submit 作业:-

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

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

您正在使用 SparkConf 设置 Spark 环境变量。您还必须使用 SparkConf 来获取它

sc.getConf.get("spark.executorEnv.FOO")

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

Add the environment variable specified by EnvironmentVariableName to the Executor process.

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

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