gpt4 book ai didi

mysql - Spark 无法从 SBT 找到 JDBC 驱动程序

转载 作者:行者123 更新时间:2023-11-29 06:04:40 24 4
gpt4 key购买 nike

我正在尝试在 Scala Spark 应用程序中使用 JDBC,并且正在使用 sbt 进行编译。但是,当我添加行 Class.forName("com.mysql.jdbc.Driver") 时,它会抛出 ClassNotFoundException。

我的 sbt 文件是这样的:

name := "SparkApp"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.1.0"
libraryDependencies += "com.databricks" %% "spark-csv" % "1.5.0"
libraryDependencies += "org.apache.spark" %% "spark-mllib" % "2.1.0"
libraryDependencies += "mysql" % "mysql-connector-java" % "6.0.5"

据我所知,最后一行是我添加 JDBC 驱动程序所需的全部内容,但它似乎不起作用。我也试过 Class.forName("com.mysql.jdbc.Driver").newInstance() 但它有相同的结果,所以我假设问题是没有添加 jdbc 类完全正确。

最佳答案

您无需提供类名即可使用 JDBC 加载数据帧。关注Spark SQL documentation ,您只需提供 "jdbc" 作为数据源格式(并且确实将连接器添加为依赖项)并设置正确的选项:

val host: String = ???
val port: Int = ???
val database: String = ???
val table: String = ???
val user: String = ???
val password: String = ???

val options = Map(
"url" -> s"jdbc:mysql://$host:$port/$database?zeroDateTimeBehavior=convertToNull",
"dbtable" -> table,
"user" -> user,
"password" -> password)

val df = spark.read.format("jdbc").options(options).load()

当您将应用程序提交到 Spark 时,您必须将 MySQL 连接器包含到最终的 jar 文件中,或者告诉 spark-submit 将包作为依赖项获取:

spark-submit --packages mysql:mysql-connector-java:6.0.5 ...

此标志也适用于 spark-shellpyspark

关于mysql - Spark 无法从 SBT 找到 JDBC 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42535807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com