调度平台上 ods_order 每天 02:00 跑,dwd_order 也是 02:00。下游任务执行成功,读到的当天分区行数是 0。日志里能对上时间点,这种反而好排。
两个任务只配了同一个 cron 表达式,没有配上下游依赖。调度器到点各自触发,谁先跑完看数据量。下游读的是一个还没写完的分区,任务状态却是成功。这一点先确认清楚,后面就不用反复试。
airflow tasks list daily_etl --tree airflow dags show daily_etl --save dag.dot
「调度依赖缺失」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。
处理上按这个顺序:在调度里把 dwd_order 的上游显式指向 ods_order;触发条件改成上游成功 不要用固定时间;下游任务开头加一步分区行数校验 为 0 就直接失败;补数据时按依赖顺序手动触发 别只重跑下游。
结果对不对很好判断,依赖树里 dwd_order 挂在 ods_order 下一层 连续三天没有出现空分区。
