当前位置: 首页 > 知识库问答 >
问题:

你如何让驱动程序和执行程序加载和识别后gres驱动程序在EMR与火花提交?

谈旺
2023-03-14

背景我试图运行一个火花提交命令,该命令来自Kafka,并在AWS EMR(版本5.23.0)中使用scala(版本2.11.12)执行JDBC接收器到postgres DB。我看到的错误是

INFO TaskSetManager: Lost task 0.3 in stage 0.0 (TID 6) on <master-public-dns-name>, executor 1: java.sql.SQLException (No suitable driver found for jdbc:postgres://... 

ERROR WriteToDataSourceV2Exec: Data source writer org.apache.spark.sql.execution.streaming.sources.MicroBatchWriter@44dd5258 is aborting.
19/06/20 06:11:26 ERROR WriteToDataSourceV2Exec: Data source writer org.apache.spark.sql.execution.streaming.sources.MicroBatchWriter@44dd5258 aborted.

假设问题我认为错误告诉我,在执行器上找不到JDBCPostgres驱动程序,这就是为什么它不能下沉到postgres。

以前的尝试我已经做了以下事情:

  1. 在我的结构化流作业中将我的驱动程序标识为Class.forName("org.postgresql.驱动程序")
  2. 在我的火花提交作业中添加了--jarspostgresql-42.1.4.jar\,以便将jars发送给驱动程序和执行程序。在这个尝试中,这个postgres驱动程序jar存在于我的本地 /home/user_name/目录
  3. 也尝试了--jars /usr/lib/spark/jars/postgresql-42.1.4.jar\到我的火花提交作业,这是火花在emr中找到所有执行的jars的位置
  4. 开始我的火花提交工作与火花提交-驱动-类-路径 /usr/lib/spark/jars/postgresql-42.1.4.jar:......
  5. 向spark.driver.extraClassPath,spark.executor.extraClassPath,spark.yarn.dist.jars,spark.driver.extraLibraryPath,spark.yarn.secondary.jars,java.library.path,以及一般的System Classpath
  6. 我的jdbc连接,而在齐柏林飞艇工作,不工作在火花提交。它是jdbc: postgres://master-Public-dns-name: 5432/DBNAME"

预期结果:我希望我的执行者识别postgres驱动程序并将数据接收到postgres DB。

以前的尝试:我已经使用了以下建议,但没有效果:

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

未找到合适的驱动程序Postgres JDBC

未找到适合jdbc的驱动程序:postgresql://192.168.1.8:5432/NexentaSearch


共有1个答案

傅涵忍
2023-03-14

使用——包组织。postgresql:postgresql:

 类似资料:
  • 如前所述,更改Spark集群冗长性的理想方法是更改相应的log4j.properties。然而,在dataproc上,Spark在Yarn上运行,因此我们必须调整全局配置,而不是/usr/lib/Spark/conf 几点建议: 在dataproc上,我们有几个gcloud命令和属性可以在集群创建过程中传递。请参阅留档是否可以通过指定更改 /etc/hadoop/conf下的log4j.prope

  • 我是Spark的初学者,我正在运行我的应用程序,从文本文件中读取14KB的数据,执行一些转换和操作(收集、收集AsMap),并将数据保存到数据库 我在我的macbook上本地运行它,内存为16G,有8个逻辑核。 Java最大堆设置为12G。 这是我用来运行应用程序的命令。 bin/spark-submit-class com . myapp . application-master local[*

  • 问题内容: 有人告诉我,加载JDBC驱动程序的首选方法是: 我知道,这对于从XML配置文件或用户输入中读取多个驱动程序之间的动态决策更好。我很好奇的是,调用此语句如何将指定的驱动程序加载到我们什至没有将生成的“ Class”对象存储在任何地方的环境中。JavaDocs条目说: 返回与具有给定字符串名称的类或接口关联的Class对象 在那种情况下,Java开发人员仅凭此语句如何设法促进驱动程序对象的

  • 我在一个单独的Docker中运行spark-master和spark-worker。 我能看见他们在跑 PS-EF grep火花根3477 3441 0 1 05?00:04:17/usr/lib/jvm/java-1.8-openjdk/jre/bin/java-cp/usr/local/spark/conf/:/usr/local/spark/jars/*-xmx1g org.apache.s

  • 我正在处理Spring Boot项目,突然遇到应用程序无法加载MySQL jdbc的问题。(我编译了一次这个项目,没有改变任何东西) 这是我的pom.xml: 这是我的application.properties: Logcat: MySQL数据库最初是使用hibernate创建的。这些配置工作正常,但我不确定这里的真正问题是什么 编辑:我删除了。m2文件夹并从一开始安装所有依赖项。

  • 问题内容: 我正在尝试运行一个ruby文件,该文件将使用seleniumwebdriver启动chrome驱动程序。我有selenium独立服务器2.35.0。和chromedriver可执行文件已安装。我正在通过运行服务器来启动 两个会话正在启动,chrome驱动程序无法启动。 这是在我使用以下文件运行文件之后 我对此并不陌生,无法找出问题所在。而且,我也试图让它无头运行,所以我正在运行Xvfb