使用Synapse管道同步Delta Lake数据时遇文件系统不存在错误
解决Synapse管道复制Databricks UC Delta数据时的「指定文件系统不存在」404错误
可能的原因及对应解决步骤
1. 暂存存储配置错误(最常见)
预览数据时无需依赖Polybase暂存,而实际运行时必须通过暂存存储完成数据加载,这是预览正常但运行失败的核心差异:
- 检查暂存设置中指定的ADLS Gen2文件系统名称是否完全匹配:ADLS Gen2文件系统名称区分大小写,预览时可能存在宽松校验,但运行时严格匹配,大小写错误会直接触发404。
- 验证访问暂存存储的身份权限:确保Synapse工作区托管标识(或指定的服务主体)拥有该文件系统的
Storage Blob Data Contributor权限,至少需具备写入、读取和列出文件的权限。
2. 运行时与预览时的身份权限差异
预览数据使用当前登录用户的身份,管道运行时则使用Synapse托管标识(或配置的服务主体),两者权限可能不一致:
- 在Databricks中,给Synapse的托管标识授予对应Unity Catalog表的
SELECT权限,同时确保该标识能访问Delta表底层的存储路径(UC表的存储路径权限需同步配置)。 - 可在Databricks中模拟托管标识的查询:
SELECT * FROM <catalog_name>.<schema_name>.<table_name>,若查询失败,说明权限不足,需补充配置。
3. 动态查询的变量替换异常
运行时动态变量替换可能出现偏差,导致查询返回的路径指向不存在的文件系统:
- 启用管道调试日志,查看运行时实际执行的SQL语句,与预览时的语句对比,确认变量替换后完全一致(比如参数中的schema、表名是否拼写正确)。
- 若查询中包含动态生成的存储路径,需确保路径中的文件系统名称无拼写错误。
4. Unity Catalog配置兼容性
确认Synapse Databricks连接器的UC配置正确:
- 在Databricks源数据集中,选择「Unity Catalog」作为元数据来源,正确填写Catalog、Schema和表名,避免使用旧的Hive元存储路径配置。
- 确保Synapse工作区使用的是支持UC的连接器版本(目前Synapse默认支持UC,旧版连接器可能存在兼容性问题)。
内容的提问来源于stack exchange,提问作者Koen van Wielink
相关产品推荐
相关产品推荐

