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

如何在Databricks中使用Secrets存储的GCP凭据从BigQuery读取数据到DataFrame

在Databricks中通过Secrets读取BigQuery数据到DataFrame

前提准备

  • 已在Databricks中创建Secret Scope,并将GCP服务账号的完整JSON凭据字符串存入该Scope下的某个Secret(例如密钥名为gcp_service_account_json)
  • 集群已安装BigQuery Spark连接器(可通过Maven坐标com.google.cloud.spark:spark-bigquery-with-dependencies_2.12:0.31.1安装,版本需匹配你的Spark版本)
  • GCP服务账号已拥有目标BigQuery表的读取权限(如BigQuery Data Viewer角色)

方法1:直接在读取时传递凭据

从Secrets中获取凭据JSON,然后通过credentials选项传入读取配置:

# 从Secrets获取GCP服务账号JSON
gcp_creds = dbutils.secrets.get(scope="your_secret_scope", key="gcp_service_account_json")

# 读取BigQuery表到DataFrame
df = spark.read.format("bigquery") \
    .option("credentials", gcp_creds) \
    .option("parentProject", "your_gcp_project_id") \
    .option("table", "your_project.your_dataset.your_table") \
    .load()

方法2:配置Spark全局凭据(推荐)

将凭据配置到Spark Conf中,后续所有BigQuery操作可直接复用,无需重复传递:

# 从Secrets获取GCP服务账号JSON
gcp_creds = dbutils.secrets.get(scope="your_secret_scope", key="gcp_service_account_json")

# 配置Spark全局GCP凭据
spark.conf.set("google.cloud.auth.service.account.json.keyfile", gcp_creds)

# 读取BigQuery表(无需再传credentials选项)
df = spark.read.format("bigquery") \
    .option("parentProject", "your_gcp_project_id") \
    .option("table", "your_project.your_dataset.your_table") \
    .load()

注意事项

  • 确保存入Secrets的服务账号JSON是完整且格式正确的字符串,不要包含多余的换行或空格
  • parentProject需填写你的GCP项目ID(即服务账号所属的项目)
  • 如果使用旧版连接器,可能需要将Spark Conf的键改为spark.hadoop.google.cloud.auth.service.account.json.keyfile

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:17:27