簡體   English   中英

Spark JDBC 連接到 Google Cloud Spanner 失敗

[英]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 作業失敗並出現以下錯誤: 在此處輸入圖像描述

這通常是從 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.

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