使用ADF Copy Activity复制数据中断后能否恢复复制避免重复?
ADF Copy Activity断点续传实现方案
直接重启流水线的话,默认的Copy Activity不会自动跳过已复制的500条记录,会重新执行全量复制。但可以通过两种方案实现从剩余记录继续复制的需求:
方案一:基于水印列的增量复制(推荐)
这是ADF官方支持的断点续传方式,前提是源表有可用于增量判断的字段,比如自增ID、时间戳(如create_time/last_modified)这类能唯一标识记录顺序的列。
- 配置流程:
- 在Copy Activity的源数据集配置里,开启增量复制选项,指定水印列和初始值(首次运行可设为源表的最小ID或最早时间戳)。
- 运行时ADF会自动记录每次复制完成后的最大水印值(比如这次失败前复制到ID=500),重启流水线后,Copy Activity会自动从该水印值之后的记录开始复制,也就是剩余的500条。
- 目标表需设置主键约束,避免重复插入已复制的记录;如果源数据存在更新场景,可结合目标端的
MERGE逻辑替代INSERT。
方案二:手动控制复制范围(无水印列场景)
如果源表没有合适的水印列,可手动拆分复制范围:
- 第一次运行时,在源查询中指定复制范围(比如
WHERE ID BETWEEN 1 AND 500),失败后修改查询条件为WHERE ID BETWEEN 501 AND 1000,再重启流水线。 - 也可以在流水线中定义变量存储已完成的最大ID,失败后手动更新变量值,让Copy Activity使用该变量作为过滤条件。
关键注意点
- 若直接重启全量复制,会导致目标表出现重复数据,必须在目标端配置重复处理策略(比如主键冲突时忽略或更新)。
- 增量复制的水印值由ADF自动跟踪,需确保流水线监控日志正常,保证水印记录不丢失。
内容的提问来源于stack exchange,提问作者Mancher
相关产品推荐
相关产品推荐

