繁体   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