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连接读写驱动程序丢失的主要内容,如果未能解决你的问题,请参考以下文章