报错信息:
py4j.protocol.Py4JJavaError: An error occurred while calling o33.load.
: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
我的解决方法:
这个报错就是提示你找不到jar包,所以你需要去下载一个和你mysql版本匹配的jdbc connector包,下载地址:https://downloads.mysql.com/archives/c-j/
我的mysql最开始是8.0.36,发现没有这个jar包所以就卸载了这个mysql然后重装了8.0.33,安装教程https://blog.csdn.net/qq_42108074/article/details/134767511
都安装完成后,将jar包拖进你spark路径/jars目录
下就开始解决这个报错
方法一:(这个方法只针对pyspark,我不清楚对后面全局是否有影响)
在运行pyspark时主动加上你的jar包,我的jar包目录是/usr/local/spark/jars/mysql-connector-java-8.0.33/mysql-connector-j.8.0.33.jar
所以我运行pyspark命令如下:
./bin/pyspark --jars "/usr/local/spark/jars/mysql-connector-java-8.0.33/mysql-connector-j-8.0.33.jar"
测试代码:
要先在mysql中添加数据库和表,再运行下面这个代码
>>> jdbcDF=spark.read.format("jdbc").option("driver","com.mysql.cj.jdbc.Driver").option("url","jdbc:mysql://localhost:3306/spark").option("dbtable","student").option("user","root").option("password","你的密码").load()
>>> jdbcDF.show()
运行结果:
我认为这个方法是局部的,也就是你每次打开都要加上jar包,但是具体不知道对全局有没有用,可以测试一下
方法二:(应该是全局有效的)改名字
直接将你的jdbc connector里面的jar文件放在spark路径/jars
下面,原来的jar包名称是mysql-connector-j-8.0.33.jar,我把他改成了mysql-connector-java-8.0.33.jar,然后就可以了:
复制到jars目录下去:
就可以了,修改后运行一下代码,测试一下: