2016-04-13 44 views
0

下面簡單的腳本工作正常pyspark跑,當它從終端跑:pySpark有職工 - 驅動程序版本衝突時,在圈地

import pyspark 

sc = pyspark.SparkContext() 
foo = sc.parallelize([1,2]) 
foo.foreach(print) 

但是當圈地跑,會產生錯誤,最其中的重要行說:

Exception: Python in worker has different version 2.7 than that in driver 3.5, PySpark cannot run with different minor versions 

而且完整的錯誤輸出可以在此鏈接中找到:http://pastebin.com/raw/unGuGLhq

$SPARK_HOME/conf/spark-env.sh文件包含FOLL由於線路:

export PYSPARK_PYTHON=python3 
export PYSPARK_DRIVER_PYTHON=python3 

的問題仍然存在,儘管並把同樣的思路在~/.bashrc沒有解決不了的問題,無論是。

圈地版本:1.3.0

星火版本:1.6.1

平臺:Linux

+0

我已閱讀其他問題,它並沒有解決我的問題,但你的評論提醒我一個令人難以置信的重要信息,我忘了包括,謝謝你。 –

+0

而且您還將我置於解決方案的正確軌道上,再次感謝您!我提交的答案類似於我懷疑是重複的問題中提供的答案之一,但提供答案的用戶未指定在何處放置適當的代碼。 –

+0

我仍然不明白爲什麼它不會從'$ SPARK_HOME/conf/spark-env.sh'中選擇它們。奇怪...... – zero323

回答

1

這個問題涉及到一個描述如下:link

圈地作爲一個桌面應用程序很難與shell環境變量一起工作。訣竅是把我們通常會聲明的變量放在spark-env.sh in Rodeo's .rodeoprofile而不是使用os模塊來添加它們。具體地,在這種情況下,加入下面的行.rodeoprofile幫助:

os.environ["PYSPARK_PYTHON"]="python3" 
os.environ["PYSPARK_DRIVER_PYTHON"]="python3" 

(雖然第二個是多餘的,我添加只是爲了一致性作爲驅動器使用的3.5反正)

+0

我無法存檔.rodeoprofile文件。它位於哪裏? – Bade