嗨,关于这个话题已经有很多问题, 解决方案始终是:
我在这里设置了一个最小示例:https://github.com/geoHeil/sparkJDBCHowTo,尝试这两种方法,但没有一种方法适合我。获得java.sql.SQLException: No suitable driver
答案 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