pyspark调mysql报错:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver
问题描述
在做http://dblab.xmu.edu.cn/blog/2335/实验时,做到最后一部分代码的第20行时如下图。
执行报错。具体错误信息为:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
分析
pyspark通过调用mysql-connector-java-5.1.47.jar包去连接mysql,报错信息是未找到包,只需要让spark识别到mysql 的jar包就可以了。
解决方法
1. 把jar包放入 spark目录下/jars/
无效
2. 调用第三方python库:findspark 链接:https://github.com/minrk/findspark
无效
3. 修改python调用spark的部分
import os
from pyspark import SparkConf, SparkContext
SUBMIT_ARGS = "--packages mysql:mysql-connector-java:5.1.39 pyspark-shell"
os.environ["PYSPARK_SUBMIT_ARGS"] = SUBMIT_ARGS
conf = SparkConf()
sc = SparkContext(conf=conf)
无效
4. 最后解决方法
- 复制mysql connect的jar包到 spark目录下/jars/
cp mysql的jar包路径 spark目录下/jars/
# 根据自己的目录调整
2. 切换到安装spark的目录
- 执行以下命令
./bin/pyspark --jars 第一步保存的jar包路径 --driver-class-path 第一步保存的jar包路径
# 例如: ./bin/pyspark --jars /usr/local/spark/jars/mysql-connector-java-5.1.49/mysql-connector-java-5.1.49.jar --driver-class-path /usr/local/spark/jars/mysql-connector-java-5.1.49/mysql-connector-java-5.1.49-bin.jar