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

Azure Data Factory复制活动多并发写入同一文件报错如何解决

ADF复制活动AdlsGen2OperationFailedConcurrentWrite错误排查修复方案

错误核心原因

该错误由ADLS Gen2存储侧的并发写入拦截机制触发:外层抛出的Microsoft.DataTransfer.Common.Shared.HybridDeliveryException是ADF复制活动的上层包装异常,嵌套的Microsoft.Azure.Storage.Data.Models.ErrorSchemaException为存储侧返回的原始错误——当多个复制活动实例(或单个活动的多个并行写入线程)同时尝试修改同一路径的文件时,存储侧会通过ETag/文件租约做前置条件校验,校验不通过就会返回PreconditionFailed状态码中断写入,和报错提示的并发写同文件场景完全匹配。

排查步骤

  • 检查管道运行历史:筛选报错对应路径的所有管道运行记录,确认报错时间点是否存在2个及以上同配置的复制活动实例同时运行,重点排查是否存在触发器调度窗口重叠、手动重复触发、父管道多分支并行调用同个复制活动的情况。
  • 检查Sink侧配置:打开复制活动的ADLS Gen2接收器配置页,确认是否设置了固定的单文件输出路径,且未开启分片文件自动命名、文件合并配置。
  • 检查并发参数配置:查看复制活动「常规」页的复制并行度设置、管道级别的并发控制设置,确认是否存在并行度过高但输出路径未做唯一化的配置。
  • 检查残留临时文件:进入报错对应的ADLS Gen2目录,查看是否存在之前失败运行残留的.tmp格式临时写入文件,这类文件可能残留文件租约,触发后续运行的写入校验失败。

修复方案

  • 解决调度层并发冲突:针对定时触发器导致的运行实例重叠问题,为翻滚窗口触发器添加自依赖配置,强制上一轮管道运行完成后再启动下一轮;针对手动/事件触发场景,在管道配置页开启并发控制,将管道最大并发实例数设置为1,确保同一时间只有一个实例写入目标路径。
  • 调整Sink写入规则:如果业务无固定单文件名要求,将接收器写入行为设置为自动生成分片文件名,避免多线程/多实例写入同一路径;如果业务要求最终输出单个固定文件名,开启复制活动的「合并文件」选项,ADF会先将并行写入的分片存到临时目录,最终单线程合并到目标文件,从流程上规避并发写冲突。
  • 配置动态唯一文件名:如果业务需要多实例并行写入同一目录,为输出文件名配置动态规则,拼接运行ID、时间戳、源分区标识等唯一字段,例如文件名配置为@concat('output_', pipeline().RunId, '.parquet'),从路径层面彻底避免文件路径冲突。
  • 清理残留锁文件:如果确认无运行中实例但仍报错,删除目标路径下所有.tmp后缀的临时文件,释放残留的文件租约后重跑管道即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 14:42:33