如何在Azure Data Factory中配置Blob创建时仅单次触发管道执行?
问题原因
你的配置错误出在触发器没有开启批量触发能力:ADF的Blob存储事件触发器默认是单事件单触发逻辑,每检测到1个新Blob创建,就独立触发1次管道运行。你同时上传N个文件就会触发N次管道,再叠加管道内的For Each活动会遍历容器内所有Blob加载数据,相当于全量加载执行N次,自然会出现重复加载的问题。手动执行管道时仅会触发1次运行,所以不会有异常。
实现单次触发的解决方案
- 第一步:修改触发器配置,开启批量触发功能。在触发器编辑页设置合适的批量时间窗口(建议按你业务侧批量文件上传完成的最长间隔配置,最大可设900秒)和最大批量事件数(最大支持500)。开启后触发器会把时间窗口内的所有Blob创建事件合并为一次触发,将所有新增Blob的路径列表作为参数传递给管道。
- 第二步:调整管道的For Each活动逻辑,把原来遍历容器内所有Blob的逻辑,改为遍历触发器传入的新增Blob路径列表,每次运行仅处理本次窗口内新增的文件,避免重复加载旧文件。
- 可选补充:在数据写入SQL的步骤前增加幂等校验,通过Blob文件名、最后修改时间等标识判断对应数据是否已经入库,已存在的直接跳过写入,进一步避免偶发异常带来的重复数据问题。
内容的提问来源于stack exchange,提问作者Xkid
相关产品推荐
相关产品推荐

