错误描述:
使用JDBC连接数据库时报错;如图所示:
javax.net.ssl.SSLException
MESSAGE: closing inbound before receiving peer's close_notify
错误说明:
连接数据库时,SSL 握手失败,因此导致此错误。
解决方法:
在url中加入 useSSL=false
例如:
val jdbcDF = spark.read.format("jdbc")
.option("url", "jdbc:mysql://127.0.0.1:3306/spark?useSSL=false")
.option("driver", "com.mysql.jdbc.Driver")
.option("dbtable", "student")
.option("user", "root")
.option("password", "1")
.load()
这段代码是通过 Spark 从 MySQL 数据库中读取学生表 (student) 的数据,分别使用了以下参数:
"jdbc"
:数据源格式,指定为 JDBC。option("url", "jdbc:mysql://127.0.0.1:3306/spark?useSSL=false")
:指定数据库连接 URL,包括服务器地址 (127.0.0.1)、端口号 (3306)、数据库名 (spark),以及禁用 SSL 连接 (useSSL=false
)。option("driver", "com.mysql.jdbc.Driver")
:指定 JDBC 驱动程序的类名,使用的是 MySQL Connector/J 驱动程序 (com.mysql.jdbc.Driver)。option("dbtable", "student")
:指定要读取的表名,此处为学生表 (student)。option("user", "root")
:指定连接数据库使用的用户名。option("password", "1")
:指定连接数据库使用的密码。load()
:最后执行load()
方法来加载数据集。