CDH 中为spark 安装 python3
Posted 费曼学习
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CDH 中为spark 安装 python3相关的知识,希望对你有一定的参考价值。
1. 环境信息
1.1 系统版本信息
lsb_release
2.1 spark和python 信息
环境是基于CDH平台配置,其中spark有两个版本,一个默认的为1.6, 一个2.1 。而这时python的版本为2.7.5,也是自带的环境。
pyspark
pyspark2
2. 安装python 3.6环境
目前pyspark支持到python3.6,所以本次就安装python3.6的版本。
操作需要在Master 和slave节点都需要操作
2.1 安装 yum-utils
是yum的一个扩展插件
当然前提电脑之前已安装了yum
sudo yum -y install yum-utils
2.2 安装centos的开发工具
这个工具是用来编译代码的作用
sudo yum -y groupinstall development
2.3 安装iUS第三方包
安装这个包是为了通过yum安装软件是,可以获得最新软件版本
sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
可是出问题了!!!
错误时不打开网址,通过浏览器访问也不能访问,初步可以判定是网络的问题了。
解决方法:
网址:https://pkgs.org/download/ius-release
选择版本:
下载文件:ius-release-2-1.el7.ius.noarch.rpm
安装:
sudo yum -y install /home/ius-release-2-1.el7.ius.noarch.rpm
2.4 安装python
安装python
sudo yum -y install python36u
查看python的版本
python3.6 -V
安装python pip
sudo yum -y install python36u-pip
注意这个可以不用执行,因为在安装python时已经安装了pip。
接下来安装 python36u-devel,目的是为了IUS提供python3的类库和头文件。
sudo yum -y install python36u-devel
2.5 配置python的环境(重点!)
两种方法,
1. 虚拟环境(推荐)
使用venv方法
python3.6 -m venv py3
source py3/bin/activate
python -V
deactivate
修改环境变量:
vim /etc/profile
//向该文件中添加下面的环境变量,这个不行
// export PYSPARK_PYTHON=/usr/bin/py3/bin/python
export PYSPARK_PYTHON=python3
source /etc/profile
检查pyspark是否可以
pyspark
报错了!!!
经过多方查询,发现是因为版本问题:
官方给的是spark1.6支持python2.6+,按说3.6也是2.6+,其实不然。这还要从python不寻常的版本升级说起,python3和python2比可以说是另起炉灶,改动较大,以至于违背了传统的新版本兼容老版本的问题。
经过查证,spark对于python的支持,在spark1.6时只支持到pyhthon 3.5,直到spark2.1之后才支持pyhthon3.6,所以报出这个错误很可能是和版本有关了。
既然如此,我们可以从侧面来验证,因为我的另外一个spark版本就是2.1,按上面的说法应该是支持python3.6了。验证如下:
成功! 可以从看出python3环境是可以在spark2.1上运行的。而上面出现的问题,也很有力的被佐证了
pyspark报错的错误解决办法是在spark_evn.sh中解决。下面有交代
2. 修改软连接(不推荐)
这种方法是常规方法,但是会污染python字带环境,导致yum和防火墙出问题。
在上面的配置好的环境下,我们查看一下 python可以执行的名录
ll /usr/bin py*
上图标出带有 ->类型的表示建立了软连接。
软连接(symbolic link)等同于Windows中的快捷键使用
由于系统默认的是python2.7, 从上图中也可以看出,/usr/bin/python -> python2 而 python2 ->python2.7。现在要做的就是将这个软连接修改成:
/usr/bin/python -> python3。
备份原来的软连接
mv python python.bak
创建新的软连接
ln -s /usr/bin/python3.6 /usr/bin/python
这样子就可以了,不过操作中为使用这个方法。
3 配置spark-evn.sh环境变量
该文件目录为/etc下面,由于安装了两个,所以由spark和spark2两个文件夹
修改/etc/spark/conf/spark-env.sh文件,在其中加入环境变量
export PYSPARK_PYTHON=python
添加这个目的是为了解决pyspark出错的问题。
4. 测试示例
创建SparkSession
from pyspark.sql import SparkSession
spark = SparkSession
.builder
.appName("Python Spark SQL basic example")
.config("spark.some.config.option", "some-value")
.getOrCreate()
读取数据
df = spark.read.json("file:///opt/cloudera/parcels/SPARK2/lib/spark2/examples/src/main/resources/people.jso")
#注意 file:/// 表示读取本地的文件,如果不添加的话会默认读取hdfs中的文件。
df.show()
测试成功!
5 编写一个脚本
# Date: 2020-07-29
# Author:
# Version: v1.0
#
# 安装 utils
sudo yum -y install yum-utils
sudo yum -y groupinstall development
# 前提这个rpm文件已经放/home目录下
sudo yum -y install /home/ius-release-2-1.el7.ius.noarch.rpm
# 安装python
sudo yum -y install python36u
# 安装pip
sudo yum -y install python36u-pip
# 安装 python36u-devel
sudo yum -y install python36u-devel
# python 环境虚拟化配置
python3.6 -m venv py3
source py3/bin/activate
python -V
deactivate
# 修改spark的配置文件
echo export PYSPARK_PYTHON=python>>/etc/spark/conf/spark-env.sh
echo export PYSPARK_PYTHON=python3>>/etc/spark2/conf/spark-env.sh
欢迎订阅
以上是关于CDH 中为spark 安装 python3的主要内容,如果未能解决你的问题,请参考以下文章
在CDH上用外部Spark2.2.1安装和配置 CarbonData
spark HA 安装配置和使用(spark1.2-cdh5.3)