Pyspark 追加执行器环境变量
Pyspark append executor environment variable
是否可以在 spark 中为 worker 的 PYTHONPATH 附加一个值?
我知道可以转到每个工作节点,配置 spark-env.sh 文件并执行此操作,但我想要更灵活的方法
我正在尝试使用 setExecutorEnv 方法,但没有成功
conf = SparkConf().setMaster("spark://192.168.10.11:7077")\
.setAppName(''myname')\
.set("spark.cassandra.connection.host", "192.168.10.11") /
.setExecutorEnv('PYTHONPATH', '$PYTHONPATH:/custom_dir_that_I_want_to_append/')
它在每个执行器上创建一个 pythonpath env.variable,强制它是 lower_case,并且不解释 $PYTHONPATH 命令来附加值。
我最终得到两个不同的 env.variables,
pythonpath : $PYTHONPATH:/custom_dir_that_I_want_to_append
PYTHONPATH : /old/path/to_python
第一个是动态创建的,第二个之前已经存在。
有人知道怎么做吗?
我自己想通了...
问题不在于 spark,而在于 ConfigParser
基于this answer,我修复了 ConfigParser 以始终保留大小写。
在此之后,我发现默认的 spark 行为是将值附加到现有工作人员 env.variables,如果存在同名的 env.variable。
所以,没有必要在美元符号中提及 $PYTHONPATH。
.setExecutorEnv('PYTHONPATH', '/custom_dir_that_I_want_to_append/')
是否可以在 spark 中为 worker 的 PYTHONPATH 附加一个值?
我知道可以转到每个工作节点,配置 spark-env.sh 文件并执行此操作,但我想要更灵活的方法
我正在尝试使用 setExecutorEnv 方法,但没有成功
conf = SparkConf().setMaster("spark://192.168.10.11:7077")\
.setAppName(''myname')\
.set("spark.cassandra.connection.host", "192.168.10.11") /
.setExecutorEnv('PYTHONPATH', '$PYTHONPATH:/custom_dir_that_I_want_to_append/')
它在每个执行器上创建一个 pythonpath env.variable,强制它是 lower_case,并且不解释 $PYTHONPATH 命令来附加值。
我最终得到两个不同的 env.variables,
pythonpath : $PYTHONPATH:/custom_dir_that_I_want_to_append
PYTHONPATH : /old/path/to_python
第一个是动态创建的,第二个之前已经存在。
有人知道怎么做吗?
我自己想通了...
问题不在于 spark,而在于 ConfigParser
基于this answer,我修复了 ConfigParser 以始终保留大小写。
在此之后,我发现默认的 spark 行为是将值附加到现有工作人员 env.variables,如果存在同名的 env.variable。
所以,没有必要在美元符号中提及 $PYTHONPATH。
.setExecutorEnv('PYTHONPATH', '/custom_dir_that_I_want_to_append/')