Dataproc 笔记本无法导入或导出到 BigQuery:Class 未找到异常

Dataproc notebook cannot import or export to BigQuery : Class Not Found Exception

这是我正在制造的火花 session。我包含了 Dataproc 1.5 的 spark 大查询连接器的最新 jar。

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("GCS to BigQuery - Dev") \
.config('spark.jars', 'gs://spark-lib/bigquery/spark-bigquery-latest_2.12.jar').getOrCreate() 

df = spark.read \
  .format('bigquery') \
  .option('table', 'publicdata.samples.shakespeare') \
  .load()

例外情况:

Py4JJavaError: An error occurred while calling o228.load. : java.lang.ClassNotFoundException: Failed to find data source: bigquery

编辑 1:我从 UI 而不是 shell 创建了集群。我已经看到解决方案,当人们在从 shell 创建集群时添加 jar 文件时,这似乎可行。但我很好奇,为什么从 UI 执行此操作时,它不会起作用。

编辑 2:我正在使用 jupyter notebook 运行 上面的代码。

我认为 SPARK-21752 中的描述是相关的 - 此时应用程序已经启动,您无法更改其类路径。请尝试 运行 和 pyspark --jars gs://spark-lib/bigquery/spark-bigquery-latest_2.12.jar (然后你可以跳过 .config() 部分。

一切正常如果您只是回归到 Dataproc 映像 1.4 并使用连接器 jar gs://spark-lib/bigquery/spark-bigquery-latest.jar