两个团队的DAG互相依赖——跨团队调度协作
先说结论
跨团队调度协作的核心是数据契约(Data Contract):上下游约定数据的产出时间、格式、质量标准。技术上用ExternalTaskSensor/API触发实现跨DAG依赖,管理上用数据契约+SLA监控保证协作可靠。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
在某知名出海硬件品牌,数据组的DWS层依赖算法组产出的用户画像表,算法组的模型训练又依赖数据组产出的DWD表。两个团队的DAG互相依赖——算法组改了产出时间没通知数据组,导致数据组的DWS每周有2-3次因为上游没到而延迟。跨团队依赖是调度管理中最容易出问题的环节。
跨DAG依赖的实现方式
| 方式 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| ExternalTaskSensor | 轮询检查外部Task状态 | 简单直接 | Sensor占资源/耦合DAG ID |
| TriggerDagRunOperator | 上游完成后触发下游DAG | 推模式更高效 | 上游需要知道下游存在 |
| 数据就绪标志 | 检查_SUCCESS文件/分区 | 解耦(不依赖调度系统) | 需要额外的标志管理 |
| API触发 | 上游调Airflow API触发下游 | 完全解耦 | 需要网络可达和认证 |
数据契约——跨团队协作的基础
# 数据契约示例
# 上游:算法组的用户画像表
# 契约内容:
# ├── 表名:dws_user_profile
# ├── 产出时间:每天凌晨3:00前
# ├── SLA:3:30(超时告警)
# ├── 分区格式:dt=yyyy-MM-dd
# ├── 数据质量:null率<1%,行数>100万
# ├── Schema:user_id BIGINT, age INT, gender STRING, ...
# ├── 变更通知:Schema变更提前3天通知下游
# └── 责任人:算法组张三
# 下游:数据组依赖这个表做DWS聚合
# Sensor配置:
# timeout=3600(最多等到4:00)
# soft_fail=True(超时用旧数据兜底)
实战经验:跨团队依赖治理
在某知名出海硬件品牌,跨团队依赖问题频发。我主导了一次依赖治理:
第一步:梳理依赖地图。把所有跨团队依赖画成图——数据组依赖算法组3张表,算法组依赖数据组5张表,BI组依赖数据组10+张表。总共18条跨团队依赖链。
第二步:建立数据契约。每条依赖链签订数据契约——约定产出时间、SLA、Schema、变更通知流程。契约存在Confluence上每个团队可见。
第三步:技术实现。用_SUCCESS标志文件+S3KeySensor实现依赖检测。不直接依赖对方的DAG ID——解耦了调度系统层面的耦合。
第四步:监控告警。每条依赖链设SLA监控——上游超过约定时间没产出数据就@上游团队。
效果:跨团队依赖导致的延迟从每周2-3次降到每月1次以内。核心改变不是技术而是流程——数据契约让每个团队明确知道自己的责任和上下游的期望。
面试高频追问
追问一:数据契约怎么执行?改了Schema不通知怎么办?
技术手段:在下游ETL中加Schema校验——如果上游表的列数/列名/列类型和预期不一致立刻告警。管理手段:Schema变更必须走审批流程(类似代码PR),下游团队有Review权限。在出海硬件品牌我们用Great Expectations做自动化Schema检查。
追问二:用_SUCCESS文件还是ExternalTaskSensor?
_SUCCESS文件更解耦——不依赖对方用什么调度系统,只依赖数据是否产出。ExternalTaskSensor耦合了Airflow DAG ID——如果对方改了DAG名字你的Sensor就断了。跨团队依赖推荐用_SUCCESS文件或数据分区检测。团队内部依赖可以用ExternalTaskSensor。
追问三:微服务之间的事件驱动调度呢?
更现代的方案是用消息队列做事件驱动——上游产出数据后发一条消息到Kafka/SQS,下游监听消息触发ETL。这完全解耦了上下游——不需要Sensor轮询、不需要知道对方的调度系统、不需要_SUCCESS文件。但实现复杂度更高。适合大型组织和微服务架构。
总结
跨团队调度讲三层:① 技术实现(ExternalTaskSensor/数据标志/_SUCCESS文件/API触发,推荐标志文件最解耦);② 数据契约(产出时间/SLA/Schema/变更通知,上下游权责明确);③ 监控保障(每条依赖链设SLA,上游超时自动@上游团队)。能讲出18条跨团队依赖的治理过程和延迟从周2-3次降到月1次的效果,面试官觉得你有组织级的调度治理能力。
下一篇聊数仓分层的调度编排:ODS/DWD/DWS怎么按层组织DAG?
你们跨团队依赖怎么管理的?评论区聊聊~
关注「Wood聊大数据」| 9年大数据老兵,聊技术、聊职场、聊成长