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 docs 说明配置选项 spark.driver.extraClassPath
不能用于添加 JDBC 驱动程序 JAR,如果 运行 处于客户端模式(这是 Dataproc 运行的模式) 因为 JVM 已经启动。
我尝试在 Dataproc 的提交命令中添加 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
如果你在作业之前将 jarfile 暂存到集群上,另一种方法是将你需要的 jarfile 转储到 /usr/lib/hadoop/lib/
中,它应该自动成为 Hadoop 和 Spark 作业的驱动程序类路径的一部分.
当通过 Dataproc 提交 Spark 作业时,您可以使用 --properties
参数将 jar(来自 --jars
参数)添加到 Spark Driver class-path:
$ gcloud dataproc jobs submit spark ... \
--jars=gs://<BUCKET>/<DIRECTORIES>/<JAR_NAME> \
--properties=spark.driver.extraClassPath=<JAR_NAME>
我正在尝试通过 JDBC 写作:
df.write.jdbc("jdbc:postgresql://123.123.123.123:5432/myDatabase", "myTable", props)
Spark docs 说明配置选项 spark.driver.extraClassPath
不能用于添加 JDBC 驱动程序 JAR,如果 运行 处于客户端模式(这是 Dataproc 运行的模式) 因为 JVM 已经启动。
我尝试在 Dataproc 的提交命令中添加 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
如果你在作业之前将 jarfile 暂存到集群上,另一种方法是将你需要的 jarfile 转储到 /usr/lib/hadoop/lib/
中,它应该自动成为 Hadoop 和 Spark 作业的驱动程序类路径的一部分.
当通过 Dataproc 提交 Spark 作业时,您可以使用 --properties
参数将 jar(来自 --jars
参数)添加到 Spark Driver class-path:
$ gcloud dataproc jobs submit spark ... \
--jars=gs://<BUCKET>/<DIRECTORIES>/<JAR_NAME> \
--properties=spark.driver.extraClassPath=<JAR_NAME>