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

如何配置Spark在AKS Pod中使用Azure工作负载身份访问存储?

正确配置Spark通过Azure托管身份(工作负载身份)访问ADLS Gen2

前提准备

  • 确保你的Spark运行环境(Azure Databricks/HDInsight/Azure VM/AKS等)已启用托管身份(系统分配或用户分配)。
  • 为该托管身份在目标ADLS Gen2存储账户/容器上分配Storage Blob Data Contributor(或对应权限的角色,如只读场景用Storage Blob Data Reader),注意必须是数据平面角色,而非管理平面的Reader角色。

具体Spark配置

场景1:使用系统分配托管身份

无需指定托管身份的Client ID,配置如下:

spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.MsiTokenProvider")
spark.conf.set("fs.azure.account.oauth2.msi.tenant.<storage-account>.dfs.core.windows.net", "<directory-id>")

替换<storage-account>为你的存储账户名,<directory-id>为Azure AD租户ID。

场景2:使用用户分配托管身份

需要指定用户分配托管身份的Client ID,配置如下:

spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.MsiTokenProvider")
spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<managed-identity-client-id>")
spark.conf.set("fs.azure.account.oauth2.msi.tenant.<storage-account>.dfs.core.windows.net", "<directory-id>")

替换<storage-account>、<managed-identity-client-id>(用户分配托管身份的客户端ID)、<directory-id>为对应值。

关键注意事项

  1. 使用存储账户级配置:所有属性需添加<storage-account>.dfs.core.windows.net后缀,避免全局配置影响其他存储账户,这也是你之前用全局XML配置可能出错的原因之一。
  2. Hadoop版本兼容性:确保Spark依赖的Hadoop版本在3.2及以上,该版本开始稳定支持MsiTokenProvider。
  3. 错误排查:若仍出现含HTML的错误,可通过以下方式验证:
    • 在Spark运行环境中,用Azure CLI测试托管身份有效性:az login --identity,随后执行az storage blob list --account-name <storage-account> --container-name <container>,若能正常列出Blob,说明身份权限配置正确;若失败,检查角色分配是否生效(角色分配可能需要数分钟同步)。
    • 确认租户ID、托管身份Client ID等参数无拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:05:33