解决安装pyspark所遇到的所有问题

我写这篇小博客的由来:
前天我修改我Ubuntu的用户名名称,改成别人的名字缩写,这样就可以方便他截图交作业了。但没想到的是,修改个用户名居然导致我虚拟机不能正常开机。而且还比较麻烦,不像修改主机名一样简单。无奈之下只好重装系统,重头部署大数据环境,我想着之前有安装过所有环境经验,应该一个小时之内可以完成的。一开始安装Hadoop,hive,hbase,spark很顺利。但是到了pyspark时候已经折腾我大半天了。同样的电脑,同样的操作,遇到了我之前没遇到过的问题。我觉得安装大数据感觉是一门玄学。也给我血痛的教训,不要顺便修改用户名,搞不好会死机的。


问题描述

  • python环境3.8.10 spark版本2.4.4 pyspark版本2.4.4

我的linux自带python环境是3.8.10 里面没有自带pip 于是就先下载pip

sudo apt install python3-pip

接着下载pyspark

sudo pip install pyspark

接着启动pyspark
解决安装pyspark所遇到的所有问题_第1张图片
好了报错,上网查看错误原因,网上说pyspark2.4.4不支持python3.8以上的环境(巧了我正好是版本pyspark是2.4.4而python是3.8.),只需要降低python版本就可以了。

接着下载安装python3.6,在安装python3.6之前 首先需要先下载两个环境依赖

apt-get install gcc        安装c++解释器

还有个解压包

 sudo  apt-get -y install zlib*

不下载这个解压包到后面make install过程中你会报一个错误
在这里插入图片描述
zipimport.ZipImportError: can’t decompress data; zlib not available,报错内容意思是:无法解压缩数据;zlib不可用

  • 下载python3.6
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz

解压Python文件

tar -zvxf  Python-3.6.1.tgz  

进入Python3.6文件

cd  Python3.6

先创建python3.6文件夹,主要用来把所有编译安装好文件放在这里方便管理。系统自带的python文件都是东放一个西放一个

sudo mkdir /usr/local/python3.6

接着配置文件指定安装到那个目录(要进入python3.6文件夹才能输入下面命令)

./configure --prefix=/usr/local/python3.6

编译(又是一个漫长的编译安装过程)

make  编译

编译成功会出现这样提示

在这里插入图片描述

安装

sudo make install

解决安装pyspark所遇到的所有问题_第2张图片
接着将编译安装好的python3.6解释器放在系统的bin目录(也可以不要用放,但是,你要配置环境变量) 这一步要注意,我当时进入$/usr/local/python3.6/bin 用着相对路径 ln -s python3.6 /usr/bin/python3.6 结果启动失败,所以你一定要用绝对路径 ln -s ./python3.6 /usr/bin/python3.6 或者下面第一条

sudo ln -s  /usr/local/python3.6/bin/python3.6   /usr/bin/python3.6
sudo ln -s /usr/loacl/python3.6/bin/pip3.6     /usr/bin/pip3.6

这里注意python3.6自带pip 而python3.5是没有的。而且其实我一开始安装python3.5过程中编译安装过程不是很顺利,可能是python3.5所需依赖的环境比较多。所有建议安装python3.6
解决安装pyspark所遇到的所有问题_第3张图片

输入python3.6 出现下面表示安装成功了。
在这里插入图片描述

输入python3
在这里插入图片描述

  • 在此之前我还用到应该问题 启动python3.6 时候报错
    报错内容:-bash: /usr/lib/command-not-found:/usr/bin/python3:解释器错误: 没有那个文件或目录
    我当时忘记怎么解决了,总之把之前python文件删除注意别把系统自带的python文件删除了。重新装严格按照上面来应该就不会有问题。

  • 这样就有两个python环境 输入python3 (系统自带)就使用python3.8 输入python3.6就使用python3.6解释器 也可以将python3 指向python ln -s /usr/bin/python3 /usr/bin/python 你输入python就使用python3.8解释器

接着修改spark配置文件
解决安装pyspark所遇到的所有问题_第4张图片
将pyspark选择的python版本选择python3.6
解决安装pyspark所遇到的所有问题_第5张图片
再次启动pyspark
解决安装pyspark所遇到的所有问题_第6张图片
好了又报错,以往之前这样就可以成功了,但是这次不行。都说了是一门玄学。报错的内容意思是 你python里面没有安装py4j模块

那怎么办? 那就安装py4j模块咯

> pip3.6 install py4j

这里注意 如果pip3 instal py4j 你就把py4j库安装到python3.8那文件里面的。但是我们需要用python3.6来运行pyspark,所以要把py4j安装到pip3.6

用pip3 下载的库会放到python3.8 pip下载的库就放到python3.6
在这里插入图片描述

在这里插入图片描述

回归主题 接下来安装时又报了个错误
在这里插入图片描述

报错内容如下
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting py4j
Could not fetch URL https://pypi.python.org/simple/py4j/: There was a problem confirming the ssl certificate: Can’t connect to HTTPS URL because the SSL module is not available. - skipping
Could not find a version that satisfies the requirement py4j (from versions: )
No matching distribution found for py4j
这段报错内容翻译过来简单来说就是 无法下载py4j。原因在于需要ssl/tls证书,但是这两个证书在python3.6是不可用的。
接着我用python3.8 去下载pip3 install py4j 发现可以。但是对我来说没用。


上网寻找办法
都说安装openssl 就可以了 但是出现无法定位包e:openssl-devel 我换了网址镜像修改/etc/apt/sources.list镜像网站还是不行

apt-get install openssl-devel

最后找到办法

pip install py4j -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

pyspark启动成功

解决安装pyspark所遇到的所有问题_第7张图片
参考文章
https://blog.csdn.net/weixin_43837883/article/details/89606425
https://blog.csdn.net/SevenBerry/article/details/121088835
https://blog.csdn.net/qq_41842588/article/details/117857189

总之挺坎坷的。写于----2022年10/11 秋 17:45 心情:差(昨天科目三刚挂)

保持饥饿,保持愚蠢 —Steve Jobs

你可能感兴趣的:(大数据,spark)