我正在学习 pyspark,并尝试连接到 mysql 数据库。
但是我在运行代码时遇到 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
异常。我花了一整天试图修复它,任何帮助将不胜感激:)
我正在使用带有 anaconda 和 python 3.6.3 的 pycharm 社区版
这是我的代码:
from pyspark import SparkContext,SQLContext
sc= SparkContext()
sqlContext= SQLContext(sc)
df = sqlContext.read.format("jdbc").options(
url ="jdbc:mysql://192.168.0.11:3306/my_db_name",
driver = "com.mysql.jdbc.Driver",
dbtable = "billing",
user="root",
password="root").load()
这是错误:
py4j.protocol.Py4JJavaError: An error occurred while calling o27.load.
: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
原文由 rakesht 发布,翻译遵循 CC BY-SA 4.0 许可协议
在撰写本文时 9 个月前有人问过这个问题,但由于没有答案,所以就这样了。我遇到了同样的情况,一遍又一遍地搜索 stackoverflow,尝试了不同的建议,但最终的答案非常简单:您只需将 MySQL 驱动程序复制到 Spark 的“jars”文件夹中!
在这里下载 https://dev.mysql.com/downloads/connector/j/5.1.html
我使用的是 5.1 版本,虽然存在 8.0,但是在使用 Spark 2.3.2 运行最新版本时我遇到了一些其他问题(在 Windows 10 上运行 Spark 2.4 时也遇到了其他问题)。
下载后,您只需将其复制到您的 Spark 文件夹 E:\spark232_hadoop27\jars\(使用您自己的驱动器:\folder_name——这只是一个示例)
你应该有两个文件: E:\spark232_hadoop27\jars\mysql-connector-java-5.1.47-bin.jar E:\spark232_hadoop27\jars\mysql-connector-java-5.1.47.jar
之后,通过 pyCharm 或 jupyter notebook 启动的以下代码应该可以工作(只要您设置了 MySQL 数据库,即):
请记住,我目前正在本地使用我的 Spark 设置,因此没有涉及真正的集群,也没有提交到此类集群的“生产”类代码。对于更详细的内容,这个答案可能会有所帮助: MySQL read with PySpark