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

如何重新运行ADF管道中未获取数据的迭代任务?

问题背景

我有一个ADF父管道,调用包含DataFlow的子管道,实现从Kusto(ADX)查询数据并导出到ADLSv2的功能。由于数据集规模过大,目前只能通过4分区处理的方式正常运行,但遇到了以下问题:

  • 个别分区运行时无法获取数据,但手动在Kusto执行相同查询能正常返回结果
  • ADF没有抛出任何错误,导致内置重试机制无法触发
  • 已通过将ADF元数据 ingest到Kusto监控确认问题:有数据的任务会返回带记录数的metrics,无数据的任务metrics为空

数据流的写入顺序说明:

  1. 查询结果用于后续数据源(对应写入顺序3)
  2. 虚拟源,用于查看查询语句(即使运行失败也能保留语句)
  3. 实际导出数据的获取与写入环节
解决思路与方案

1. 主动检测空结果并触发重试

直接在DataFlow的实际数据输出环节(写入顺序3)添加空记录判断逻辑:

  • 用rowCount()函数统计输出记录数,当结果为0时抛出自定义错误
    操作步骤:在数据流里添加「条件分支」,判断rowCount() == 0时,调用error("Partition returned empty result set")
  • 给子管道配置重试策略,把自定义错误纳入重试触发条件,让空数据场景自动触发重试

2. 优化Kusto分区查询的可靠性

  • 检查分区键的分布是否均匀,避免某分区查询时因Kusto资源调度优先级低导致无返回
    可在Kusto中执行分区查询时添加set querytrace;,查看查询执行轨迹,确认是否存在资源等待或扫描异常
  • 给Kusto源查询添加超时参数:在ADF DataFlow的Kusto源查询开头加上set query_timeout=5min;,避免因查询超时静默无输出
  • 启用Kusto侧的查询重试,或在ADF的Kusto源配置里开启重试选项

3. 完善监控告警机制

  • 基于ADF管道的metrics配置自定义告警:当某个分区任务的记录数指标为空时,直接触发邮件或Teams告警,无需人工排查
  • 在数据流中添加日志输出:把每个分区的查询语句、执行时间、记录数写入Kusto监控表,方便快速定位空数据的触发场景

内容的提问来源于stack exchange,提问作者Guilherme Matheus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:03:09