[英]Spark JDBC connection to Google Cloud Spanner failure
我正在尝试使用 PySpark JDBC 连接从 Google Cloud Spanner 读取数据。 我的 Spark 应用程序在 Dataproc 集群上运行。 我正在使用官方的 Google Cloud Spanner JDBC 驱动程序,如此处所示。 下面是 PySpark 代码片段:
project = <<PROJECT_ID>>
instance = <<INSTANCE_ID>>
databases = <<DATABASE_ID>>
spanner_connection_url = 'jdbc:cloudspanner:/projects/' + project + '/instances/' + instance + '/databases/' + databases
df = spark.read \
.format("jdbc") \
.option("url", spanner_connection_url) \
.option("driver", "com.google.cloud.spanner.jdbc.JdbcDriver") \
.option("dbtable", "test_employee") \
.load()
这通常是从 Spark 设置 JDBC 连接的标准方法,或者对于 Spanner,是否需要做一些不同的事情。
该错误似乎表明 JDBC 驱动程序在其依赖项之一中找不到 class。 难道你只添加了 JDBC 驱动程序的 .jar 文件,而不是它的任何依赖项?
或者换一种说法:您如何确保不仅 JDBC 驱动程序,而且它的所有依赖项都被添加到类路径中?
The missing class is from com.google.api:gax-grpc
https://mvnrepository.com/artifact/com.google.api/gax-grpc . I downloaded and checked google-cloud-spanner-jdbc-2.7.6.jar
from https://search.maven.org/artifact/com.google.cloud/google-cloud-spanner-jdbc/2.7.6/jar ,但它似乎不包括依赖项,只找到 Spanner JDBC 类。 因此,您可能需要添加缺少的依赖项。
$ jar tf google-cloud-spanner-jdbc-2.7.6.jar
...
com/google/cloud/spanner/jdbc/JdbcClob.class
com/google/cloud/spanner/jdbc/JdbcDataSource.class
com/google/cloud/spanner/jdbc/JdbcBlob$1.class
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.