【问题标题】:ClassNotFoundException on connecting MariaDB using Spark使用 Spark 连接 MariaDB 时出现 ClassNotFoundException
【发布时间】:2017-05-05 15:53:27
【问题描述】:

我正在尝试将 Spark 连接到 MariaDB,我得到了

线程“main”中的异常 java.lang.ClassNotFoundException: org.mariadb.jdbc.Driver

现在在您将其标记为重复之前,我知道错误的含义,并且我已经阅读了不同的线程但没有成功。

这是我的build.sbt

scalaVersion := "2.11.8"

name := "SparkJdbc"

libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % "2.0.2",
    "org.apache.spark" %% "spark-sql" % "2.0.2",
    "org.mariadb.jdbc" % "mariadb-java-client" % "1.5.2"
)

我也有单独的罐子,我试过了

spark-submit --class SparkJdbc target/scala-2.11/sparkjdbc_2.11-0.1-SNAPSHOT.jar 
--jars /path/to/mariadb-java-client-1.5.2.jar

但这也因同样的错误而失败。

以下是我用来连接的代码

val (driver, url, username, password) = ("org.mariadb.jdbc.Driver", "jdbc:mysql://localhost/db1", "user", "password");

Class.forName(driver).newInstance;

val data = spark.sqlContext.read
    .format("jdbc")
    .option("url", url)
    .option("user", username)
    .option("password", password)
    .option("dbtable", "SELECT * FROM db1.football LIMIT 10")
    .load();

【问题讨论】:

  • /path/to/mariadb-java-client-1.5.2.jar 你能说得更具体一点吗?您是否只是提供了本地到驱动程序的文件路径,或者在它前面加上了一些东西? (localhttp 等)。如果你让日志记录更详细一点,你能看到 Spark 加载 mariadb jars 吗?
  • @TheArchetypalPaul 我正在使用--jars 命令行参数为驱动程序提供本地文件路径。
  • 那么您能在驱动程序日志中看到它找到并加载了 jar 吗?
  • @TheArchetypalPaul 我在将rootCategory 设置为ALL 时得到了这个信息“INFO SparkContext:添加了 JAR 文件:/~/Downloads/mariadb-java-client-1.5.2.jar在 spark://ip:port/jars/mariadb-java-client-1.5.2.jar 时间戳为 1482248249212"

标签: java scala apache-spark sbt apache-spark-sql


【解决方案1】:

我可以看到两个可能的错误:

  1. --jars 应该在 jar 名称之前使用。来自documentation,关于 Jar 名称后的参数:

传递给主类的主要方法的参数(如果有)

  1. 文件应该在所有节点上的同一路径上或位于分布式文件系统(如 HDFS)中 - 如果您仅在主服务器或驱动程序中获取文件,则应用程序将引发错误

编辑:

should也设置--driver-class-path=/path/to/jar/with/driver.jar

取自文档的其他选项是:

JDBC 驱动程序类必须对原始类加载器可见 在客户端会话和所有执行者上。这是因为 Java 的 DriverManager 类进行安全检查,导致它忽略 当一个驱动程序运行时,所有驱动程序对原始类加载器都不可见 打开连接。 一种方便的方法是修改 所有工作节点上的 compute_classpath.sh 以包含您的驱动程序 JAR。

【讨论】:

  • 我之前移动了 --jars 声明,现在我得到了 java.sql.SQLException: No suitable driver
  • @philantrovert 查看更新 - 可能需要其他参数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-13
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 2019-09-15
  • 2023-03-04
相关资源
最近更新 更多