用 PySpark 从 MySQL 数据库中读取数据时出现提示:Loading class `com.mysql.jdbc.Driver‘. This is deprecated.

文章讲述了在Pyspark中读取MySQL数据库时,遇到关于过时com.mysql.jdbc.Driver的警告。解决方法是更新JDBC驱动为com.mysql.cj.jdbc.Driver,以提升代码的健壮性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题描述

在Pyspark使用Spark SQL读取MySQL数据库中的数据时出现警告,提示你正在使用已过时的 MySQL JDBC 驱动程序类名

如下图:

参数解释:

  1. driver: 这是 JDBC 驱动程序的类名,用于与特定数据库进行通信。对于 MySQL 数据库,驱动程序类名通常是 `"com.mysql.jdbc.Driver"`。它告诉 Spark 使用哪个驱动程序来连接 MySQL 数据库。
  2. url: 这是数据库的连接 URL。对于 MySQL 数据库,连接 URL 通常以 `"jdbc:mysql://"` 开头,后面跟着数据库的主机名(或 IP 地址)、端口号(默认为 3306)和数据库名称。例如,"jdbc:mysql://localhost:3306/spark"意味着连接到本地主机上的 MySQL 实例,并选择名为 "spark" 的数据库。
  3. dbtable: 这是要读取的数据库表的名称。上述代码中,它被设置为 `"student"`,这意味着想要从名为 "student" 的数据库表中读取数据。
  4. user: 这是用于连接数据库的用户名。上述代码中,它被设置为 `"root"`,这是 MySQL 数据库默认的管理员用户名。
  5. password: 这是用于连接数据库的密码。上述代码中,它被设置为 `"123456"`,这是与用户名对应的密码。

上述参数是笔者根据自己实际情况进行设置,读者可自行修改。

二、解决办法

  • 将上述代码中的“.option("driver","com.mysql.jdbc.Driver") \”删除即可
jdbcDF = spark.read \
    .format("jdbc") \
    .option("url", "jdbc:mysql://localhost:3306/spark") \
    .option("dbtable", "student") \
    .option("user", "root") \
    .option("password", "123456") \
    .load()

  • 或者将其中的“.option("driver","com.mysql.jdbc.Driver") \”修改为“.option("driver","com.mysql.cj.jdbc.Driver") \”亦可
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", "123456") \
    .load()

如上,并无提示

三、问题分析

上述警告是在提示正在使用已过时的 MySQL JDBC 驱动程序类名 com.mysql.jdbc.Driver。新的 MySQL JDBC 驱动程序类名是 com.mysql.cj.jdbc.Driver

警告中还指出,现在的 JDBC 驱动程序通过 SPI(Service Provider Interface)自动注册,所以通常不需要手动加载驱动程序类。意味着,可以省略 option("driver", "com.mysql.jdbc.Driver") 这个选项,Spark 将会自动使用正确的驱动程序。

如果读者不修改代码,而继续使用已经过时的驱动程序类名 `com.mysql.jdbc.Driver`,Spark 会继续加载该驱动程序,但会显示警告信息。这个警告只是提醒读者当前使用的驱动程序类名已经过时,建议使用新的驱动程序类名 `com.mysql.cj.jdbc.Driver`。

警告信息本身不会影响代码的执行,但建议尽量避免使用已经过时的类名,以便保持代码的健壮性和可维护性。因此,最好还是修改代码,使用新的驱动程序类名,以避免未来可能出现的问题。

如下,不修改代码,会提示信息但能正常加载并使用:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

哇咔咔哇咔

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值