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