You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark无法读取BigQuery公开数据集表的技术求助

PySpark连接BigQuery公开数据集失败的解决办法

问题场景

已正常初始化Spark会话,但执行以下代码读取BigQuery公开数据集bigquery-public-data.samples.shakespeare时报错:

from pyspark.sql import SparkSession
spark = SparkSession.builder \
  .appName('Optimize BigQuery Storage') \
  .config('spark.jars.packages', 'gs://spark-lib/bigquery/spark-3.1-bigquery-0.27.1-preview.jar') \
  .getOrCreate()

df = spark.read \
  .format("bigquery") \
  .load("bigquery-public-data.samples.shakespeare")

核心原因与解决方案

1. 缺失GCP身份认证

即使是公开数据集,Spark连接器仍需基础GCP身份验证才能访问BigQuery服务。

  • 本地运行:设置环境变量指定服务账号密钥路径
    export GOOGLE_APPLICATION_CREDENTIALS="/绝对路径/你的服务账号密钥.json"
    
  • Spark代码中配置:在SparkSession构建时添加认证配置
    spark = SparkSession.builder \
      .appName('Optimize BigQuery Storage') \
      .config('spark.jars.packages', 'gs://spark-lib/bigquery/spark-3.1-bigquery-0.27.1-preview.jar') \
      .config("google.cloud.auth.service.account.json.keyfile", "/绝对路径/你的服务账号密钥.json") \
      .getOrCreate()
    
    Dataproc集群运行可跳过此步骤,默认使用集群绑定的服务账号权限

2. 未启用BigQuery Storage API

前往GCP控制台搜索BigQuery Storage API,确认该API已启用(读取BigQuery数据必须依赖此API,公开数据集也不例外)

3. 验证Jar包兼容性

当前使用的spark-3.1-bigquery-0.27.1-preview.jar与Spark 3.1版本匹配,若仍有问题,可替换为Maven仓库的稳定版依赖:

.config('spark.jars.packages', 'com.google.cloud.spark:spark-bigquery-with-dependencies_2.12:0.27.1')

注意Scala版本需与Spark一致,Spark 3.1默认使用Scala 2.12

4. 显式指定临时GCS桶

若以上方法无效,可在读取时指定临时GCS桶(用于数据中转,需确保你拥有该桶的读写权限):

df = spark.read \
  .format("bigquery") \
  .option("table", "bigquery-public-data.samples.shakespeare") \
  .option("temporaryGcsBucket", "你的临时GCS桶名称") \
  .load()

内容的提问来源于stack exchange,提问作者user18708380

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:37:01