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

时间:2016-06-10 06:09:31

标签: jdbc apache-spark apache-spark-sql

嗨,关于这个话题已经有很多问题, 解决方案始终是:

  • 包括司机通过sbt-assembly
  • 使用spark-submit的选项 - 包 加载它们

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

2 个答案:

答案 0 :(得分:1)

以下是修复: Apache Spark : JDBC connection not working 添加prop.put("driver", "org.postgresql.Driver")效果很好。

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

答案 1 :(得分:0)

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

E.g。使用MySQL需要JDBC驱动程序。下载驱动程序包并在可从群集中的每个节点访问的路径中提取mysql-connector-java-x.yy.zz-bin.jar。优选地,这是共享文件系统上的路径。 例如。使用Pouta虚拟群集时,此路径将位于/shared_data下,此处我使用/shared_data/thirdparty_jars/

使用来自终端1的直接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