Pyspark 追加执行程序环境变量

Posted

技术标签:

【中文标题】Pyspark 追加执行程序环境变量【英文标题】:Pyspark append executor environment variable 【发布时间】:2016-11-25 15:19:11 【问题描述】:

是否可以在 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,强制它为小写,并且不解释 $PYTHONPATH 命令来附加值。

我最终得到了两个不同的 env.variables,

pythonpath  :  $PYTHONPATH:/custom_dir_that_I_want_to_append
PYTHONPATH  :  /old/path/to_python

第一个是动态创建的,第二个之前已经存在。

有人知道怎么做吗?

【问题讨论】:

addPyFiles() 也不是我想要的... 【参考方案1】:

我想通了……

问题不在于 spark,而在于 ConfigParser

基于this answer,我修复了 ConfigParser 以始终保留大小写。

在此之后,我发现默认的 spark 行为是将值附加到现有的 worker env.variables,如果存在同名的 env.variable。

因此,没有必要在美元符号中提及 $PYTHONPATH。

.setExecutorEnv('PYTHONPATH', '/custom_dir_that_I_want_to_append/')

【讨论】:

以上是关于Pyspark 追加执行程序环境变量的主要内容,如果未能解决你的问题,请参考以下文章

第二篇:Python安装及环境变量的操作

Java & apache 配置环境变量

Win7添加php环境变量.

追加环境变量到Path

环境变量PATH

无法设置Pyspark