gpt4 book ai didi

jdbc - 将 JDBC 驱动程序添加到 EMR 上的 Spark

转载 作者:行者123 更新时间:2023-12-02 03:21:56 27 4
gpt4 key购买 nike

我正在尝试将 JDBC 驱动程序添加到在 Amazon EMR 顶部执行的 Spark 集群,但我不断收到:

java.sql.SQLException: 没有找到合适的异常驱动程序。

我尝试了以下操作:

  1. 使用 addJar 从代码中显式添加驱动程序 Jar。
  2. 使用 spark.executor.extraClassPath spark.driver.extraClassPath 参数。
  3. 使用 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

最佳答案

我遇到了同样的问题。对我有用的是使用与 spark-submit 一起使用的 --driver-class-path 参数。

主要是将整个spark类路径添加到--driver-class-path

这是我的步骤:

  1. 我通过获取来自 Spark History Server 的“spark.driver.extraClassPath”属性在“环境”下。
  2. 将 MySQL JAR 文件复制到 EMR 集群中的每个节点。
  3. 将 MySQL jar 路径放在 spark-submit 命令的 --driver-class-path 参数的前面,并将“spark.driver.extraClassPath”的值附加到它

我的驱动程序类路径最终看起来像这样:

--driver-class-path /home/hadoop/jars/mysql-connector-java-5.1.35.jar:/etc/hadoop/conf:/usr/lib/hadoop/:/usr/lib/hadoop-hdfs/:/usr/lib/hadoop-mapreduce/:/usr/lib/hadoop-yarn/:/usr/lib/hadoop-lzo/lib/:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/:/usr/share/aws/emr/emrfs/auxlib/*

这适用于使用 Java 和 Spark 1.5.0 的 EMR 4.1。我已经在 Maven pom.xml 中添加了 MySQL JAR 作为依赖项

您可能还想看看 this answer因为它似乎是一个更清洁的解决方案。我自己还没有尝试过。

关于jdbc - 将 JDBC 驱动程序添加到 EMR 上的 Spark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32756335/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com