赞
踩
`搭建pycharm远程开发spark 意义在于。我们只需要在pycharm来手动生成执行spark python项目,在linux下默认会生成spark 项目的python文件。不需要在linux下手动新建spark python文件,然后再执行。总之比较方便。
2.
接着在pycharm新建python文件 编写python spark程序
from pyspark import SparkContext
sc = SparkContext("spark://192.168.40.142:7077", "WordCountApp")
rs = sc.textFile("/home/test/wc.txt").flatMap(lambda line: line.split(" ")).map(lambda w: (w, 1)).reduceByKey(lambda x, y: x+y).sortBy(lambda x:x[1], False).collect()
for e in rs:
print(e)
运行报了个错误
报错一个主要信息就是 JAVA_HOME is not set,RuntimeError。意思是没有设置Java环境变量。我们知道,spark底层是由Scala语言编写的。而Scala是运行在jvm上的。而pyspark只需要用python语言就能够执行spark项目,不需要用用Scala语言来编写。减少学习成本,这里我多插两嘴,简单说说spark,pyspark的执行过程。
解决办法
根据上述spark,和pyspark执行过程。这个错误就很容易解决了。只需在python文件配置Linux下java环境。因为你一开始实例化spark contex对象是在jvm上面实例化的,而jdk包含jvm,因此要配置jdk环境变量。
运行之前保证你的linux下Hadoop,和spark进程都要开启。
之后又报错
22/10/14 20:29:36 ERROR StandaloneSchedulerBackend: Application has been killed. Reason: All masters are unresponsive! Giving up.
22/10/14 20:29:36 WARN StandaloneSchedulerBackend: Application ID is not initialized yet.
报错内容意思是:1.无法加载hadoop库2.应用进程被杀死,原因 因为所有master进程没回应,放弃。3.应用没有被初始化。
解决办法:在python文件配置spark环境变量即可,原因在于python执行的是spark项目,需要spark环境才可以运行。意思是上述python代码 需要python环境+spark环境+jdk环境才可以执行。
接着运行又报了个错误
jvm当中没有isEncryptionEnabled。解决办法在最上面添加两行代码
#添加此代码
import findspark
findspark.init()
#添加此代码
from pyspark import SparkConf, SparkContext
这里要注意你inux下python要有findspark库。不然也会报错,no modular name findspark。一般默认没有的,这是你要下载个findspark,但是有些python版本是不自带pip,所有首先第一步先下载pip
关于下载pip可以参考这个博客
下载完会在你当前路径下生成 get-pip.py 文件。在之前这条命令之前要先安装curl,照着错误提示安装curl,安装curl过程会报很多错误,那个可以不用管。
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本
这里注意,你用那个版本python运行安装脚本,pip会自动安装到那个python版本
sudo python get-pip.py # 运行安装脚本
你用那个版本python,就用对应的pip
pip install findspark 下载findspark库
下载完后运行
上网查找原因他们说 spark2.4.4不支持python3.8,只需要另外安装python3.8一下的版本。选择python3.8以下的解释器运行这个文件就可以了
关于如何安装python可以参考别的博客
(https://blog.csdn.net/weixin_48960305/article/details/125143116)
接着一顿操作,安装完python,重新配置linux下的python环境。选择python3.8以下的解释器
这里注意在编译和安装python过程中会报一下小错误,要留意错误信息。但是并不影响你安装成功。
接着又报错。哈哈哈哈哈笑拉了
原因在于在编译安装python时候,没有把ssl模块编译进去。而ssl模块编译需要一些依赖环境
解决办法:先安装下面两个依赖环境。一开始在网上搜索说要安装openssl-delvel。我试了报了个错误,无法地位软件报e 结果发现这个只有在centos7才有的,而ubuntu是下载下面对应两个《可以参考这个博客》,《关于安装openssl另外一种方法》
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install libffi-dev #这个不安装会报 错误6
安装完进入python配置目录 我这里是是/home/wfh/Python3.5/Modules
修改两个文件
vim Setup.dist
vim Setup
将这五行注释全部去掉,然后重新编译安装python。在pychram 部署linux下python3.7解释器。可以部署成功不报刚刚那个错误。接着运行程序
又报另外一个错误。也是没有_ctypes这个模块
上网寻找解决办法,和上一个no module ssl很相似。只需要安装环境依赖就可以了,重头编译安装python
sudo apt-get install libffi-dev
最后重新运行程序
成功!!! 呜呜呜呜呜
写于 -2022/10/15 13:39 秋 —by wfh
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。