1. 程式人生 > >關於pyspark 使用過程中需要python版本不同的需求

關於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中設定)