使用ADF将Blob中CSV复制到Databricks Delta表时遇非Delta格式错误
ADF复制CSV到Delta Lake报错“非Delta格式”的解决办法
问题背景
使用Azure Data Factory复制活动,将Azure Blob存储的CSV文件写入Databricks Delta Lake表时,系统报错提示目标表并非Delta格式,但在Databricks中确认该表确实为Delta格式(表详情显示Provider为delta)。源配置指向Blob存储的CSV文件路径,接收器配置选择Databricks链接服务并指定目标数据库和表名。
排查与修复步骤
1. 校验接收器配置准确性
- 核对ADF接收器中填写的数据库名和表名,确保与Databricks中Delta表的名称完全一致(注意部分环境下表名区分大小写)。
- 若使用路径模式而非直接选表,必须确保路径指向Delta表的根目录(即包含
_delta_log文件夹的目录),不能指向子文件夹或单独的数据文件。
2. 修复Delta表元数据
- 在Databricks执行刷新表命令同步元数据:
REFRESH TABLE <目标表名>; - 执行历史查询检查日志完整性:
若发现日志损坏,可尝试执行DESCRIBE HISTORY <目标表名>;OPTIMIZE <目标表名>整理数据,或在确认无数据风险的前提下用VACUUM <目标表名>清理无效日志文件。
3. 检查ADF链接服务权限与兼容性
- 确认ADF连接Databricks的服务主体,拥有目标Delta表的写入权限,同时具备底层存储(Blob/ADLS)的读写权限。
- 验证链接服务使用的Databricks集群或SQL仓库处于正常运行状态,且Runtime版本不低于10.0(确保兼容最新Delta Lake特性)。
4. 确认Delta表类型与存储完整性
- 在Databricks执行命令查看表详情:
确认DESCRIBE EXTENDED <目标表名>;Provider字段值为delta,验证表的Delta属性。 - 若为外部Delta表,检查底层存储路径下的
_delta_log文件夹是否存在且未被篡改,该文件夹是Delta表的核心标识。
快速验证方案
- 先在Databricks中手动插入一条测试数据到目标表,确认表可正常写入。
- 简化ADF复制任务:使用单个小体积CSV文件测试,排除数据格式或文件大小导致的异常。
内容的提问来源于stack exchange,提问作者Tautvydas Perminas
相关产品推荐
相关产品推荐

