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

Databricks挂载ADLS Gen2后缺失所有子文件夹及文件问题咨询

Databricks挂载ADLS Gen2后目录枚举不全问题排查

排查步骤

  • 首先修正文件列表查询的路径写法
    你当前执行的查询命令路径缺少根目录前导斜杠,属于相对路径写法,会导致查询路径不匹配,将命令修改为绝对路径即可:

    %fs
    ls "/mnt/files"
    

    也可以用python接口直接查询验证:

    display(dbutils.fs.ls("/mnt/files"))
    

    不带前导/的路径会默认从当前Notebook绑定的工作区用户个人目录下寻址,返回结果和挂载的存储路径无关。

  • 校验挂载使用的服务主体权限
    挂载配置里的OAuth服务主体,必须同时满足以下权限要求,否则会出现仅能看到部分有权限目录的问题:

    1. 在ADLS Gen2对应的存储账户、容器或者ARCHIVE目录层级,分配存储Blob数据读取者及以上的数据平面角色(仅分配Azure资源管理层面的所有者、参与者角色无效,这类角色不包含存储数据层访问权限)
    2. 针对ARCHIVE目录下所有需要访问的子文件夹、文件,给服务主体授予读取+执行的ACL权限,若配置了ACL权限未开继承,需要单独给每个子目录补配权限,否则无权限的目录不会出现在列表结果里。

    额外说明:你挂载configs里配置的spark.databricks.sqldw.jdbc.service.principal.client.id和spark.databricks.sqldw.jdbc.service.principal.client.secret两个参数是用于Azure Synapse SQL池JDBC连接的配置,和ADLS Gen2挂载逻辑无关,不会影响目录枚举结果,可以删除减少冗余配置。

  • 清除挂载缓存重新验证
    如果是挂载完成后才在存储端上传的新文件/文件夹,先执行挂载刷新命令清除缓存:

    dbutils.fs.refreshMounts()
    

    若之前对同一路径执行过重复挂载,先卸载旧挂载点再重新执行挂载逻辑,避免旧配置残留:

    dbutils.fs.unmount("/mnt/files")
    # 卸载完成后重新运行你的挂载代码即可
    
  • 校验存储账户基础配置
    确认ADLS Gen2账户已经开启**分层命名空间(HNS)**功能,未开启HNS的存储账户挂载到Databricks时,会因为目录结构模拟逻辑的问题出现枚举不全;同时确认未显示的文件夹不属于软删除状态、不是存放在归档访问层的未解冻blob。

典型现象匹配:存储端ARCHIVE目录下存在多个子目录,Databricks查询仅返回单个文件夹,90%以上的同类问题都是路径写错、服务主体缺数据平面/ACL权限导致的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:15:58