CDH 中为spark 安装 python3

Posted 费曼学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CDH 中为spark 安装 python3相关的知识,希望对你有一定的参考价值。

1. 环境信息


1.1 系统版本信息

lsb_release

CDH 中为spark 安装 python3


2.1 spark和python 信息

环境是基于CDH平台配置,其中spark有两个版本,一个默认的为1.6, 一个2.1 。而这时python的版本为2.7.5,也是自带的环境。

CDH 中为spark 安装 python3

pyspark
pyspark2


CDH 中为spark 安装 python3

2. 安装python 3.6环境

目前pyspark支持到python3.6,所以本次就安装python3.6的版本。

操作需要在Master 和slave节点都需要操作

2.1 安装 yum-utils

是yum的一个扩展插件

当然前提电脑之前已安装了yum

sudo yum -y install yum-utils


CDH 中为spark 安装 python3

2.2 安装centos的开发工具

这个工具是用来编译代码的作用

sudo yum -y groupinstall development

CDH 中为spark 安装 python3

2.3  安装iUS第三方包

安装这个包是为了通过yum安装软件是,可以获得最新软件版本

sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm

可是出问题了!!!

CDH 中为spark 安装 python3

错误时不打开网址,通过浏览器访问也不能访问,初步可以判定是网络的问题了。

解决方法:

网址:https://pkgs.org/download/ius-release

选择版本:

CDH 中为spark 安装 python3

下载文件:ius-release-2-1.el7.ius.noarch.rpm

安装:

sudo yum -y install /home/ius-release-2-1.el7.ius.noarch.rpm

CDH 中为spark 安装 python3

2.4 安装python

  1. 安装python

sudo yum -y install python36u

CDH 中为spark 安装 python3

  1. 查看python的版本

python3.6 -V

CDH 中为spark 安装 python3

  1. 安装python pip

sudo yum -y install python36u-pip

注意这个可以不用执行,因为在安装python时已经安装了pip。


  1. 接下来安装 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

CDH 中为spark 安装 python3

修改环境变量:

vim /etc/profile
//向该文件中添加下面的环境变量,这个不行
// export PYSPARK_PYTHON=/usr/bin/py3/bin/python
export PYSPARK_PYTHON=python3

source /etc/profile

检查pyspark是否可以

pyspark

报错了!!!

CDH 中为spark 安装 python3

经过多方查询,发现是因为版本问题:

官方给的是spark1.6支持python2.6+,按说3.6也是2.6+,其实不然。这还要从python不寻常的版本升级说起,python3和python2比可以说是另起炉灶,改动较大,以至于违背了传统的新版本兼容老版本的问题。

经过查证,spark对于python的支持,在spark1.6时只支持到pyhthon 3.5,直到spark2.1之后才支持pyhthon3.6,所以报出这个错误很可能是和版本有关了。

CDH 中为spark 安装 python3

CDH 中为spark 安装 python3

既然如此,我们可以从侧面来验证,因为我的另外一个spark版本就是2.1,按上面的说法应该是支持python3.6了。验证如下:

CDH 中为spark 安装 python3

成功! 可以从看出python3环境是可以在spark2.1上运行的。而上面出现的问题,也很有力的被佐证了

pyspark报错的错误解决办法是在spark_evn.sh中解决。下面有交代

2. 修改软连接(不推荐)


这种方法是常规方法,但是会污染python字带环境,导致yum和防火墙出问题。

在上面的配置好的环境下,我们查看一下 python可以执行的名录

ll /usr/bin py*

CDH 中为spark 安装 python3


上图标出带有 ->类型的表示建立了软连接。

软连接(symbolic link)等同于Windows中的快捷键使用

由于系统默认的是python2.7, 从上图中也可以看出,/usr/bin/python -> python2 而 python2 ->python2.7。现在要做的就是将这个软连接修改成:

/usr/bin/python -> python3。

  1. 备份原来的软连接

    mv python python.bak
  2. 创建新的软连接

    ln -s /usr/bin/python3.6 /usr/bin/python

    这样子就可以了,不过操作中为使用这个方法。

3 配置spark-evn.sh环境变量

该文件目录为/etc下面,由于安装了两个,所以由spark和spark2两个文件夹

CDH 中为spark 安装 python3

修改/etc/spark/conf/spark-env.sh文件,在其中加入环境变量

export PYSPARK_PYTHON=python

添加这个目的是为了解决pyspark出错的问题。

CDH 中为spark 安装 python3

4. 测试示例

创建SparkSession

from pyspark.sql import SparkSession

spark = SparkSession
  .builder
  .appName("Python Spark SQL basic example")
  .config("spark.some.config.option", "some-value")
  .getOrCreate()

CDH 中为spark 安装 python3

读取数据

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时启动spark一个坑

在CDH上用外部Spark2.2.1安装和配置 CarbonData

CDH| Spark升级

spark HA 安装配置和使用(spark1.2-cdh5.3)

cdh5.15集群添加spark2.3服务(parcels安装)

CDH5.5.1 安装Spark ON Yarn环境