关于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中设置)







你可能感兴趣的:(yarn,linux)