无法在 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
我正在尝试为我的 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