首先是环境安装,可参考之前的博客,里面有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
具体解决办法参考:点我呀