首页/数据/数据工程与 ETL 速查/DolphinScheduler 定时与补数

DolphinScheduler 定时与补数

工作流上线后设置定时(cron)与生效起止时间;补数按日期区间批量生成工作流实例,可选串行或并行执行,用于历史回填与故障重跑。

定时与补数是什么

Apache DolphinScheduler 里,工作流定义需要先上线才能被调度。定时(Schedule)由 cron 表达式加生效起止日期组成,决定工作流在什么时刻生成实例;补数(Backfill)则按日期区间批量生成实例,用于历史回填与故障重跑,可以选择串行或并行执行,并配置是否检查依赖节点是否满足。补数的关键差别在于业务日期:每个实例拿到的是所补日期的参数,因此脚本必须用变量而不是写死的日期。

基本信息

版本背景DolphinScheduler 2.x 与 3.x 的定时、补数入口与参数名有差异,以所部署版本界面为准
定时Cron 表达式加生效起止日期,上线后生效
补数范围按开始与结束日期批量生成实例
执行方式串行或并行,可设置并行度
依赖检查可配置是否检查依赖节点是否满足(对应参数名随版本变化)

典型使用场景

  • 新工作流上线后补跑近 30 天历史数据
  • 上游数据修正后重跑受影响日期的下游任务
  • 故障恢复:任务失败期间的时间段一次性补齐
  • 临时调整产出时间:修改定时后只对未跑过的日期生效
  • 分区表重建:按日期区间逐天重算并覆盖写入

定时与补数要点

定时与补数要点
定时示例:0 0 2 * * ?    每天 02:00 执行
补数路径:工作流定义 → 补数 → 选日期区间 → 设置并行度 → 运行

要点一:脚本用参数(如全局参数或内置日期变量)取业务日期
要点二:补数前确认写入是覆盖(INSERT OVERWRITE)还是追加
要点三:并行度按源库与目标集群承受能力设置,避免同时压上游
要点四:补数完成后核对分区行数与依赖任务是否需要跟着重跑

定时与补数对照

项定时补数
触发方式按 cron 自动生成实例手动指定日期区间
业务日期取计划时间对应日期取所补区间的每一天
执行范围未来生效期内指定的历史区间
典型用途日常调度回填与重跑
风险改定时后旧定时会残留不幂等任务造成重复数据
补数并行度开太大同时压向源库,容易影响上游生产;跨天补数前必须先确认任务是否幂等(覆盖写入还是追加写入)。
工作流更新后需要重新上线,旧的定时可能仍绑在旧版本上;调整流程结构后要回定时列表确认生效版本与生效时间。
补数时业务日期随所选日期变化,脚本里写死日期的任务补出来的是同一天的数据,看上去任务全绿但数据没有变化。

易错点

  • 补数不幂等(追加而非覆盖)造成数据重复,且要等到指标偏大才发现
  • 补数并行度过高同时压向源库,影响上游生产系统,回填变成事故
  • 工作流更新后忘记重新上线,定时仍指向旧版本,改动实际未生效
  • 脚本写死业务日期,补数跑完看似成功,实际写入的还是同一天的数据

数据来源与参考

  • Apache DolphinScheduler 官方文档:定时管理与补数
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌