簡體   English   中英

Spark - 將JDBC驅動程序JAR添加到Google Dataproc

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM