近期使用pyspark遇到的问题以及解决办法

首先是环境安装,可参考之前的博客,里面有hadoop和spark环境配置的连接。最好先安装hadoop。使用spark的话hadoop最好还是安装下。https://blog.csdn.net/qq_37437983/article/details/105492509

一:在spark中运行python代码的问题,真的这个对于经常使用spark的人来说可能是非常简单的问题,但对于我这个急于求成的人来说,真的手足无措。看网上的方法都是使用spark-submit来提交,这样总觉得很烦,如果可以之间在编译器中点击运行按钮多好。然后具体找了找,可以在代码头部添加如下代码,把环境加载进去就行了。

import os
import sys

os.environ['SPARK_HOME'] = r'/opt/spark-2.4.1/'
sys.path.append("/opt/spark-2.4.1/python/lib/py4j-0.10.7-src.zip")

 

二:首先就是第三方依赖的问题,这个问题我到现在还是没有解决,但我的问题比较特殊。下面提供的是网上的通用解决办法。

1,将需要使用依赖打包成zip格式(推荐virtualenv工具,具体用法百度),使用spark-submit提交代码是使用--py-files提交,例如下面命令,提交了pye.zip。这个方法只适用于源码中没有.so文件的依赖,对于类似numpy这样的依赖因为其存在.so需要动态编译,无法满足,所以肯定会报错numpy中缺少某个文件的错误。

spark-submit --master spark://ITS-Hadoop10:7077 --py-files pye.zip cal_similar_spark_mch.py 

方法不唯一,也可以在代码中添加如下代码:

sc = SparkContext(appName="calculate similar matrix" , master="spark://192.168.0.106:7077")
sc.addPyFile('pye.zip')

 2,直接使用anaconda(推荐),真的好使,谁用谁知道。

 

 三,类似java.lang.UnsupportedClassVersionError: org/apache/spark/network/util/ByteUnit : Unsupported major.minor version 52.0这样的问题。解决办法就是重装jdk,这个原因就是jdk版本与spark版本不对应造成的。

 

四,pyspark连接mysql数据库缺少驱动,java.sql.SQLException: No suitable driver.解决办法就是下载驱动:点我呀。然后放到%JAVA_HOME%下的/jre/lib/ext/目录下。这个是对于oracle JDK而言的。我一开始为了省事安装的openjdk,所以方法需要改变下,编辑 spark安装目录中的$SPARK_HOME/conf/spark-env.sh文件,加入如下命令。后面的路径就是你存在sql驱动的位置,需要修改下。

export SPARK_CLASSPATH=/opt/spark-2.4.1/jars/mysql-connector-java-8.0.11.jar

 

五,还一个就是在代码里连接spark的问题。具体错误我忘了,大概就是master连不上。如下代码:

sc = SparkContext(appName="calculate similar matrix" , master="spark://192.168.0.106:7077")

错误我在网上找了下,大概是这样的:

Failed to connect to master 10.xx.xx.xx:7077

具体解决办法参考:点我呀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我要出家当道士

打赏是不可能,这辈子都不可能

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值