[英]Spark - Adding JDBC Driver JAR to Google Dataproc
我試圖通過JDBC寫:
df.write.jdbc("jdbc:postgresql://123.123.123.123:5432/myDatabase", "myTable", props)
Spark文檔解釋說,如果在JVM已經啟動的情況下以客戶端模式運行(這是Dataproc運行的模式),配置選項spark.driver.extraClassPath
不能用於添加JDBC驅動程序JAR。
我嘗試在Dataproc的submit命令中添加JAR路徑:
gcloud beta dataproc jobs submit spark ...
--jars file:///home/bryan/org.postgresql.postgresql-9.4-1203-jdbc41.jar
我還添加了加載驅動程序的命令:
Class.forName("org.postgresql.Driver")
但我仍然得到錯誤:
java.sql.SQLException: No suitable driver found for jdbc:postgresql://123.123.123.123:5432/myDatabase
根據我的經驗,向屬性添加driver
通常可以解決問題:
props.put("driver", "org.postgresql.Driver")
db.write.jdbc(url, table, props)
您可能想嘗試將--driver-class-path
添加到命令參數的最后:
gcloud beta dataproc jobs submit spark ...
--jars file:///home/bryan/org.postgresql.postgresql-9.4-1203-jdbc41.jar \
--driver-class-path /home/bryan/org.postgresql.postgresql-9.4-1203-jdbc41.jar
另一種方法是,如果您在作業之前將jar文件轉移到集群上,則將所需的jar文件轉儲到/usr/lib/hadoop/lib/
,它應該自動成為Hadoop和Spark作業的驅動程序類路徑的一部分。
在通過Dataproc提交Spark作業時,可以使用--properties
參數將jar(來自--jars
參數)添加到Spark Driver類路徑:
$ gcloud dataproc jobs submit spark ... \
--jars=gs://<BUCKET>/<DIRECTORIES>/<JAR_NAME> \
--properties=spark.driver.extraClassPath=<JAR_NAME>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.