cdh 安装_CDH 中为spark 安装 python3

1. 环境信息

23b3d27e94331e27647644561c8f4abb.png

1.1 系统版本信息

lsb_release

9809794a8147780f4dfc5950f1c8e2e3.png

2.1 spark和python 信息

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

1ee3c5b8882509802d0c4e1183d80f02.png

pysparkpyspark2

fb9ce8c9b907edfe38d6e7fb01aa05f3.png

2. 安装python 3.6环境

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

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

2.1 安装 yum-utils

是yum的一个扩展插件

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

sudo yum -y install yum-utils

ab204f66ad46181ad9e8e5a4c62c0459.png

2.2 安装centos的开发工具

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

sudo yum -y groupinstall development

4884fc3a2ab1c9918f341f941d714c3d.png

2.3  安装iUS第三方包

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

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

可是出问题了!!!

b099177fd140579d000c483644d29b3f.png

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

解决方法:

找官方地址下载,本地安装。

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

选择版本:

554e00e635f2062ebec1f7e8a0e02272.png

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

安装:

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

5c4d12b5fe3470400200044dadaf4c05.png

2.4 安装python

  1. 安装python

sudo yum -y install python36u

35e621fd30549d0c3968863f38ad4c09.png

  1. 查看python的版本

python3.6 -V

8589d67fd0d0b44af19fb721843970d9.png

  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 py3source py3/bin/activatepython -Vdeactivate

87a98683d16f183a873f79f883addd5e.png

修改环境变量:

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

检查pyspark是否可以

pyspark

报错了!!!

fe2357e6d1ca9aa08e643aef0995da23.png

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

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

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

f7c49ffe1097dd5a647dc3537df561e7.png

1ca31bc15b220055025fb723fbb19bef.png

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

2813b3aa011c22e244282b73d5e563ed.png

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

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

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

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

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

ll /usr/bin py*

2d31a3543ba38bd90f256f666c745736.png

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

软连接(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两个文件夹

0a0a30822e0c4b50d7145bc24380f308.png

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

export PYSPARK_PYTHON=python

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

37ec2436a4d4fb9240f715364de2d18a.png

4. 测试示例

创建SparkSession

from pyspark.sql import SparkSessionspark = SparkSession \    .builder \    .appName("Python Spark SQL basic example") \    .config("spark.some.config.option", "some-value") \    .getOrCreate()

45480b69be26aeda6734b5fbd91ae5d2.png

读取数据

df = spark.read.json("file:///opt/cloudera/parcels/SPARK2/lib/spark2/examples/src/main/resources/people.jso")#注意 file:/// 表示读取本地的文件,如果不添加的话会默认读取hdfs中的文件。df.show()

d1d7f4c92d6a1e59c6edf6dd8f53cd57.png

测试成功!

5 编写一个脚本

# Date: 2020-07-29# Author:# Version: v1.0## 安装 utilssudo yum -y install yum-utilssudo yum -y groupinstall development# 前提这个rpm文件已经放/home目录下sudo yum -y install /home/ius-release-2-1.el7.ius.noarch.rpm# 安装pythonsudo yum -y install python36u# 安装pipsudo yum -y install python36u-pip# 安装 python36u-develsudo yum -y install python36u-devel# python 环境虚拟化配置python3.6 -m venv py3source py3/bin/activatepython -Vdeactivate# 修改spark的配置文件echo export PYSPARK_PYTHON=python>>/etc/spark/conf/spark-env.shecho export PYSPARK_PYTHON=python3>>/etc/spark2/conf/spark-env.sh

欢迎订阅

684f33bf54e6bb8fed3e1db3b09e9496.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值