Apache spark JDBC连接读写驱动程序丢失

Posted

技术标签:

【中文标题】Apache spark JDBC连接读写驱动程序丢失【英文标题】:Apache spark JDBC connection read write driver missing 【发布时间】:2016-06-10 06:09:30 【问题描述】:

您好,关于这个话题已经有很多问题了, 解决方案总是:

通过 sbt-assembly 包含驱动程序 使用 spark-submit 的选项 --packages 动态加载它们

我在这里设置了一个最小示例:https://github.com/geoHeil/sparkJDBCHowTo,尝试了这两种方法,但没有一个对我有用。获取java.sql.SQLException: No suitable driver

【问题讨论】:

【参考方案1】:

这里是修复: Apache Spark : JDBC connection not working 添加prop.put("driver", "org.postgresql.Driver") 工作正常。

奇怪的是,连接似乎不稳定,例如使用 hive-context 它只能工作 2 次中的 1 次。

【讨论】:

【参考方案2】:

这很简单。要连接到外部数据库以将数据检索到 Spark 数据帧中,需要一个额外的 jar 文件。

例如mysql 需要 JDBC 驱动程序。下载驱动程序包并将mysql-connector-java-x.yy.zz-bin.jar 提取到集群中每个节点都可以访问的路径中。最好这是共享文件系统上的路径。 例如。使用 Pouta 虚拟集群,这样的路径将在 /shared_data 下,这里我使用 /shared_data/thirdparty_jars/

通过从终端直接提交 Spark 作业,可以指定 –driver-class-path 参数指向应提供给作业工人的额外 jar。然而这不适用于这种方法,因此我们必须在spark-defaults.conf 文件中为前端和工作节点配置这些路径,通常在/opt/spark/conf 目录中。

放置任何jar,具体取决于您使用的服务器:

spark.driver.extraClassPath /"your-path"/mysql-connector-java-5.1.35-bin.jar

spark.executor.extraClassPath /"your-path"/mysql-connector-java-5.1.35-bin.jar

【讨论】:

以上是关于Apache spark JDBC连接读写驱动程序丢失的主要内容,如果未能解决你的问题,请参考以下文章

编程实现利用 DataFrame 读写 MySQL 的数据

Spark Jdbc 连接 JDBCOptions

如何使用 JDBC 从 Oracle 读取数据集?

spark DataFrame 读写和保存数据

是否可以使用 spark 的 jdbc 驱动程序将 apache spark 与 jasper 集成?

SparkSQL 读写 Mysql