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

Posted

技术标签:

【中文标题】Dataproc 笔记本无法导入或导出到 BigQuery:找不到类异常【英文标题】:Dataproc notebook cannot import or export to BigQuery : Class Not Found Exception 【发布时间】:2021-02-10 21:57:53 【问题描述】:

这是我正在制作的火花会话。我为 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 来运行上面的代码。

【问题讨论】:

【参考方案1】:

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

【讨论】:

在创建 spark 会话之前,我在笔记本中运行了 !pyspark --jars gs://spark-lib/bigquery/spark-bigquery-latest_2.12.jar。但后来我收到关于 ZMQError: Address already in use 的错误。 你用的是哪个笔记本?请相应地更新问题 在我的问题中包含一个编辑。我正在使用 jupyter notebook web 界面。【参考方案2】:

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

【讨论】:

以上是关于Dataproc 笔记本无法导入或导出到 BigQuery:找不到类异常的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark 和 BigQuery 在 Google Dataproc 中使用两个不同的项目 ID

错误 - 使用 Apache Sqoop 和 Dataproc 从 SQL Server 导入 GCS

加载资源失败(找不到文件) Electron js 无法导入或导出

Dataproc spark 作业无法从 bigtable 扫描记录

Dataproc 不导入存储在 Google Cloud Storage 存储分区中的 Python 模块

Linux内存从0到1学习笔记(8.10 dma-buf导出器和导入器使用示例 一)