如何用SAS通过Databricks连接读写Azure ADLS Gen2/Blob存储及排障
Azure存储SAS密钥连接Databricks故障排查思路
验证SAS Token的权限和有效期
- 确认SAS Token包含Blob存储(或对应存储类型)的读写权限,尤其是你要操作的容器/对象权限
- 检查Token的
st(起始时间)和se(过期时间),确保当前时间在有效期内,注意Azure默认使用UTC时区 - 确认SAS是针对整个存储账户还是特定容器,如果是容器级SAS,连接时要指定对应容器路径
检查Databricks配置语法
- 使用Spark配置时,确保格式正确,替换占位符后执行:
spark.conf.set("fs.azure.account.auth.type.<存储账户名>.dfs.core.windows.net", "SAS") spark.conf.set("fs.azure.sas.token.provider.type.<存储账户名>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.sas.FixedSASTokenProvider") spark.conf.set("fs.azure.sas.fixed.token.<存储账户名>.dfs.core.windows.net", "<你的SAS Token>") - SAS Token不要带开头的
?符号,直接复制?后面的完整字符串
- 使用Spark配置时,确保格式正确,替换占位符后执行:
排查网络与防火墙设置
- 检查存储账户防火墙规则:如果设置了允许特定IP访问,要把Databricks集群的出站IP添加进去(集群详情页的「网络」标签可查看)
- 若使用VNet注入的Databricks,确认存储账户与VNet的对等连接或服务端点已配置完成
测试基础连接
- 用简单命令测试能否列出容器,替换占位符后执行:
dbutils.fs.ls("abfss://<容器名>@<存储账户名>.dfs.core.windows.net/") - 根据报错信息针对性排查:比如
403 Forbidden大概率是权限不足,InvalidAuthenticationInfo说明Token无效或格式错误
- 用简单命令测试能否列出容器,替换占位符后执行:
确认存储账户类型与端点匹配
- Blob存储用
blob.core.windows.net端点,ADLS Gen2用dfs.core.windows.net端点,不要混用
- Blob存储用
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

