2016-11-25 50 views
3

是否可以在Spark中將值附加到工作人員的PYTHONPATH中?Pyspark附加執行程序環境變量

我知道這是可能去的每個工作節點,配置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 

第一種是動態創建和之前已經存在的第二個。

有誰知道該怎麼做?

+0

addPyFiles()不是我想要的... – guilhermecgs

回答

3

我想通了,我自己...

的問題是不是火花,而是在ConfigParser

基於this answer,我固定ConfigParser始終保持情況。

在此之後,我發現默認的火花行爲是將值附加到現有的工人env.variables,如果有一個env.variable具有相同的名稱。

因此,在美元符號內沒有必要提及$ PYTHONPATH。

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