如何为Dataproc现有集群添加bigquery-connector解决Spark读BigQuery报错
你遇到的报错是Spark运行时未加载BigQuery连接器依赖导致的,根据你使用Dataproc的不同场景,解决方案如下:
场景1:使用spark-submit提交独立脚本
直接在提交命令中加入--packages参数自动拉取连接器依赖,示例命令:
spark-submit --packages com.google.cloud.spark:spark-bigquery-with-dependencies_2.12:0.30.0 你的脚本路径.py
注意:包名后缀的_2.12对应Scala 2.12版本,适配Spark 3.2及以上版本,你可以根据你集群的Spark版本调整对应连接器版本号即可。
场景2:在Dataproc自带的Jupyter/Zeppelin交互式环境运行
在代码最开始初始化SparkSession时,指定连接器依赖配置即可,示例代码:
from pyspark.sql import SparkSession # 初始化SparkSession时加载BigQuery连接器 spark = SparkSession.builder \ .appName("BigQueryMLTask") \ .config("spark.jars.packages", "com.google.cloud.spark:spark-bigquery-with-dependencies_2.12:0.30.0") \ .getOrCreate() # 后续即可正常执行读取BigQuery的代码 df = spark.read.format('bigquery').load('bigquery-public-data.samples.shakespeare')
场景3:集群所有任务默认支持BigQuery读取
你可以在创建Dataproc集群时直接预装连接器,后续所有提交到该集群的任务都不需要再单独配置依赖,创建集群的gcloud命令示例:
gcloud dataproc clusters create 你的集群名称 \ --region=对应区域 \ --metadata spark-bigquery-enabled=true \ --metadata spark-bigquery-connector-version=0.30.0
额外提示:需要确保Dataproc集群的服务账号拥有对应BigQuery数据集的读取权限,否则依赖配置完成后仍会出现权限类报错。
内容的提问来源于stack exchange,提问作者Kerem Tatlıcı
相关产品推荐
相关产品推荐

