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

Azure Databricks中过期令牌替换及存储访问报错问题

解决Azure Databricks访问存储时的客户端密钥过期401错误

你的Spark代码加载DBFS挂载路径的JSON文件时触发401错误,明确提示应用的客户端密钥已过期。即使已在Key Vault更新密钥,仍出现该问题,可按以下步骤排查解决:

错误信息翻译

Py4JJavaError: 调用o442.load时发生错误。
: HTTP错误401;为应用提供的客户端密钥已过期。请访问Azure门户为你的应用创建新密钥,或考虑使用证书凭据以提高安全性。
为应用提供的客户端密钥已过期。
请访问Azure门户为你的应用创建新密钥,或考虑使用证书凭据以提高安全性。"error_codes":[7000222],"timestamp":"2025-01-21 01:06:54Z"

排查与解决步骤

1. 重启集群,刷新密钥缓存

运行中的Databricks集群会缓存从Key Vault获取的密钥/令牌,即使Key Vault更新了密钥,集群仍可能使用旧值。立即重启集群,让它重新从Key Vault拉取最新密钥并生成有效访问令牌。

2. 验证DBFS挂载点的配置正确性

  • 执行dbutils.fs.mounts()查看挂载点的认证配置,确认挂载时是否正确引用了Key Vault中的最新密钥,而非硬编码旧密钥。
  • 若挂载是通过集群初始化脚本自动执行的,检查脚本中是否正确读取Key Vault的密钥,避免出现缓存旧密钥的逻辑。

3. 确认Service Principal的密钥状态

  • 登录Azure门户,找到对应的Service Principal,检查新创建的密钥是否处于有效状态,确认过期时间设置正确。
  • 同时验证该Service Principal对目标存储账户拥有足够权限(如Storage Blob Data Contributor角色),避免权限不足引发的401混淆。

4. 重新挂载DBFS路径(若配置存在问题)

如果挂载配置存在异常,可执行以下命令重新挂载,确保使用Key Vault中的最新密钥:

dbutils.fs.mount(
  source = "wasbs://<container-name>@<storage-account>.blob.core.windows.net",
  mount_point = "/mnt/Sources/team/raw",
  extra_configs = {
    "fs.azure.account.auth.type": "OAuth",
    "fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
    "fs.azure.account.oauth2.client.id": "<你的客户端ID>",
    "fs.azure.account.oauth2.client.secret": dbutils.secrets.get(scope="<Key Vault密钥范围>", key="<最新密钥名称>"),
    "fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/<租户ID>/oauth2/token"
  }
)

5. 检查密钥范围的权限

确认Databricks的密钥访问范围(Secret Scope)已授权给当前集群或用户,确保集群能够正常读取Key Vault中的新密钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:03:15