關於pyspark 使用過程中需要python版本不同的需求

最近碰到了一個問題,挺有意思,是在使用spark過程中需要用到pyspark,而本地接口機的python版本太低,只有python 2.6版本,需求需要python 2.7版本甚至python 3版本。

但是在使用過程中不允許修改主機自帶的python。

怎麼辦呢。只能手動下載指定。其中又分爲 anaconda 版本的python,還有直接python官網下載python包安裝。

其中anaconda又分爲 parcel 版的,還有.sh安裝版本。

首先說一下使用python 官網下載python包安裝的方式。

下載地址:

https://www.python.org/download/releases/2.7/

然後安裝這個python

​tar xzvf Python-2.7.tgz
cd Python-2.7
./configure --prefix=/opt/python
make
sudo make install

之後就是需要在運行spark程序的時候指定了:

spark的deploy-mode一般有兩種模式,一個是cluster 模式,一個是client模式

其中client模式需要設置: 

PYSPARK_PYTHON=/path/to/python2.7             (可在環境變量中設置,可以在spark-env.sh中設置)

cluster模式需要設置:

spark.yarn.appMasterEnv.PYSPARK_PYTHON=/path/to/python2.7
spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=/path/to/python2.7   (可在運行中臨時指定,也可在spark-default.sh中設置)


然後再說一下anaconda版本的python。。這是一個大坑。。奈何做科學計算還有好多人認這個工具。。總是令人不忍放棄,卻又心力憔悴。

一開始用anaconda版本的.sh文件安裝的。奈何提交clinet模式的時候總是報

Exception in thread "main" java.io.IOException: Cannot run program "/home/hadoop/Anaconda/bin": error=13, Permission denied

搞了將近一個月,最終還是不行,除非用root用戶,或者sudo運行,否則無法正常提交,但是這肯定是不行的

最後使用了cloudera manager 集成了anaconda 的parcel,然後拷貝了這個被集成之後的目錄到客戶端使用才解決了這個問題

/opt/cloudera/parcels/Anaconda/bin

其他的參數配置跟上面的相同。就是這些:

其中client模式需要設置: 

PYSPARK_PYTHON=/path/to/python2.7             (可在環境變量中設置,可以在spark-env.sh中設置)

cluster模式需要設置:

spark.yarn.appMasterEnv.PYSPARK_PYTHON=/path/to/python2.7
spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=/path/to/python2.7   (可在運行中臨時指定,也可在spark-default.sh中設置)







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章