【问题标题】:Apache spark JDBC connection read write driver missingApache spark JDBC连接读写驱动程序丢失
【发布时间】:2016-06-10 06:09:30
【问题描述】:
您好,关于这个话题已经有很多问题了,
解决方案总是:
- 通过 sbt-assembly 包含驱动程序
- 使用 spark-submit 的选项 --packages
动态加载它们
我在这里设置了一个最小示例:https://github.com/geoHeil/sparkJDBCHowTo,尝试了这两种方法,但没有一个对我有用。获取java.sql.SQLException: No suitable driver
【问题讨论】:
标签:
jdbc
apache-spark
apache-spark-sql
【解决方案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