在Databricks挂载禁用分层命名空间的Azure Blob Storage后fs.ls报UnknownHostException如何解决?
检查存储账户与容器名称拼写
确认挂载命令中的<account-name>和<container-name>完全正确:Azure存储账户名称必须为小写,不能包含大写字母或拼写错误,比如wasbs://mycontainer@mystorageaccount.blob.core.windows.net/里的账户名要和Azure门户中显示的一致。验证存储账户网络访问规则
如果存储账户开启了防火墙或虚拟网络限制,需确保Databricks集群所在VNet被加入允许列表,或者临时切换为“允许从所有网络访问”来排查是否是网络限制导致的问题。确认挂载端点正确性
禁用分层命名空间的Blob Storage必须使用blob.core.windows.net端点,不要误用ADLS Gen2的dfs.core.windows.net端点,正确挂载URL格式为wasbs://<container>@<account>.blob.core.windows.net/。测试集群域名解析能力
在Databricks集群上运行以下命令,验证能否解析存储账户域名:%sh nslookup your-storage-account.blob.core.windows.net如果解析失败,说明集群DNS配置存在问题,需检查VNet的DNS设置,确保能正常解析Azure公共服务域名。
重新挂载并核对配置
先卸载已挂载路径:dbutils.fs.unmount("/mnt/your-mount-point")再使用完整正确参数重新挂载(以账户密钥为例):
dbutils.fs.mount( source = "wasbs://mycontainer@mystorageaccount.blob.core.windows.net/", mount_point = "/mnt/your-mount-point", extra_configs = {"fs.azure.account.key.mystorageaccount.blob.core.windows.net": "your-valid-storage-key"} )挂载后立即执行
dbutils.fs.ls("/mnt/your-mount-point"),若仍报错,查看集群日志获取更详细的网络或权限报错信息。检查认证凭据有效性
如果使用账户密钥,确认密钥未过期或被轮换;如果使用SAS令牌,确保令牌包含list权限、有效期未过,且格式正确(需附加在source URL后,如wasbs://mycontainer@mystorageaccount.blob.core.windows.net/?your-sas-token)。
内容的提问来源于stack exchange,提问作者Zuberkhan Pathan

