如何解决Azure Databricks挂载容器时的wasb错误?
Azure Databricks挂载WASB容器报错排查方案
报错信息
shaded.databricks.org.apache.hadoop.fs.azure.AzureException: shaded.databricks.org.apache.hadoop.fs.azure.AzureException: Unable to access container tokyo-olympic-data in account tokyoolympicdatasg.blob.core.windows.net using anonymous credentials, and no credentials found for them in the configuration.
排查及解决步骤
1. 核对挂载命令的凭证配置
确保挂载命令正确传入存储账户密钥或SAS令牌,示例命令如下:
# 使用存储账户密钥挂载 dbutils.fs.mount( source = "wasbs://tokyo-olympic-data@tokyoolympicdatasg.blob.core.windows.net/", mount_point = "/mnt/tokyo-olympic-data", extra_configs = {"fs.azure.account.key.tokyoolympicdatasg.blob.core.windows.net": "<你的存储账户密钥>"} ) # 使用SAS令牌挂载 dbutils.fs.mount( source = "wasbs://tokyo-olympic-data@tokyoolympicdatasg.blob.core.windows.net/", mount_point = "/mnt/tokyo-olympic-data", extra_configs = {"fs.azure.sas.tokyo-olympic-data.tokyoolympicdatasg.blob.core.windows.net": "<你的SAS令牌>"} )
注意:凭证不能包含多余空格,SAS令牌需确保拥有容器的读取/列出权限。
2. 检查集群级Hadoop配置
若通过集群全局配置传递凭证,确认集群的Spark配置已添加对应项:
- 进入Databricks集群页面 → 编辑集群 → 高级选项 → Spark → Spark配置,添加:
spark.hadoop.fs.azure.account.key.tokyoolympicdatasg.blob.core.windows.net <你的存储账户密钥>
3. 验证存储账户与容器的网络/权限设置
- 检查存储账户防火墙规则:若设置了IP白名单,需将Databricks集群的公网IP加入;测试阶段可临时开启“允许所有网络”验证。
- 确认容器访问级别:若容器为私有访问,必须提供有效凭证;若开启匿名访问,需确保权限配置为“Blob匿名读取”或“容器匿名读取”。
4. 确认凭证有效性
- 存储账户密钥:在Azure门户的存储账户→访问密钥中重新获取,确保密钥未被轮换或禁用。
- SAS令牌:检查令牌的过期时间、权限范围(是否覆盖目标容器)、资源类型(需包含容器和Blob)。
内容的提问来源于stack exchange,提问作者Koushick Mondal
相关产品推荐
相关产品推荐

