【发布时间】:2015-12-21 18:15:16
【问题描述】:
我正在尝试将 JDBC 驱动程序添加到在顶级 Amazon EMR 上执行的 Spark 集群,但我不断收到:
java.sql.SQLException: 没有找到适合异常的驱动程序。
我尝试了以下方法:
- 使用 addJar 从代码中显式添加驱动程序 Jar。
- 使用 spark.executor.extraClassPath spark.driver.extraClassPath 参数。
- 使用 spark.driver.userClassPathFirst=true,当我使用此选项时,我得到一个不同的错误,因为 Spark 的依赖项混合在一起,无论如何,如果我只想添加一个 JAR,此选项似乎过于激进。
您能帮我解决这个问题吗?如何轻松地将驱动程序引入 Spark 集群?
谢谢,
大卫
应用程序源代码
val properties = new Properties()
properties.put("ssl", "***")
properties.put("user", "***")
properties.put("password", "***")
properties.put("account", "***")
properties.put("db", "***")
properties.put("schema", "***")
properties.put("driver", "***")
val conf = new SparkConf().setAppName("***")
.setMaster("yarn-cluster")
.setJars(JavaSparkContext.jarOfClass(this.getClass()))
val sc = new SparkContext(conf)
sc.addJar(args(0))
val sqlContext = new SQLContext(sc)
var df = sqlContext.read.jdbc(connectStr, "***", properties = properties)
df = df.select( Constants.***,
Constants.***,
Constants.***,
Constants.***,
Constants.***,
Constants.***,
Constants.***,
Constants.***,
Constants.***)
// Additional actions on df
【问题讨论】:
-
您是否尝试在您的应用程序 jar 中插入 jdbc jar?
-
是的,我做到了。 jar 是我的项目类路径的一部分。当我在本地执行代码时,它运行良好,只有在 Amazon EMR 上我遇到了困难。
-
你可以尝试用你的 jar 的内容来编辑你的问题吗?
-
当然。我不能放我的整个源代码,但我会复制粘贴主要部分。
-
Ofc,我们不需要完整的源代码
标签: jdbc apache-spark amazon-emr