如何让驱动程序和执行程序在emr中通过spark submit加载和识别postgres驱动程序?

7gyucuyw  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(584)

我正在尝试运行一个spark submit命令,该命令从kafka流式传输,并使用scala(版本2.11.12)在aws emr(版本5.23.0)中将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.

假设问题我认为错误告诉我jdbc postgres驱动程序在executors上找不到,这就是它不能沉到postgres的原因。
以前的尝试我已经做了以下工作:
在结构化流媒体工作中将我的驱动程序标识为 Class.forName("org.postgresql.Driver") 补充 --jars postgresql-42.1.4.jar \ 为了把jar送到司机和遗嘱执行人那里,我把它交给了我的工作。在这次尝试中,这个postgres驱动程序jar存在于my local/home/user\u name/目录中
也试过了 --jars /usr/lib/spark/jars/postgresql-42.1.4.jar \ 到我的spark submit作业,这是spark在emr中查找所有jar以执行的位置
开始我的工作 spark-submit --driver-class-path /usr/lib/spark/jars/postgresql-42.1.4.jar:.... 添加了 /usr/lib/spark/jars/postgresql-42.1.4.jar 到spark.driver.extraclasspath、spark.executor.extraclasspath、spark.yarn.dist.jars、spark.driver.extraclibrarypath、spark.yarn.secondary.jars、java.library.path,以及一般的系统类路径
我的jdbc连接在齐柏林飞艇中工作时,在spark submit中不起作用。它是 jdbc:postgres://master-public-dns-name:5432/DBNAME" 预期结果:我希望我的执行者能够识别postgres驱动程序并将数据接收到postgres数据库。
以前的尝试:我已经使用了以下建议但没有效果:
为emr上的spark添加jdbc驱动程序
没有找到合适的驱动程序postgres jdbc
找不到合适的驱动程序jdbc:postgresql用法:/192.168.1.8:5432/nexentasearch

czq61nw1

czq61nw11#

使用 -- packages org.postgresql:postgresql:<VERSION>

相关问题