数仓调度辅助功能效率提升
调度是数仓数据生成的执行者,好的调度可以事半功倍,目前市面上的调度很多,比如DolphinScheduler、Oozie、Azkaban等调度工具,当然也可自行开发适合自己企业个性化的调度工具。调度工具怎么实现这里暂且不谈,核心谈一下调度除了基本的核心功能外,在实际工作中还需要具备哪些功能,可以提升工作效率以及方便任务管理。
1.一个调度最好只调度一个表,这样可以方便下游依赖可以更早执行,不必等待无关的表跑完再执行,或者调度支持表级小依赖也可忽略这一点。
2.调度依赖树需要维护好,某个节点失败,需要支持当前节点的重跑会自动重跑下游的所有节点,或者批量重跑时支持自动寻找依赖关系依次执行。
3.调度需要支持外部调用,因为有的任务可能需要依赖外部接口拉数据,拉数据完成后再通知执行调度任务。
4.需要支持检索任一调度上下游依赖关系以及查看调度状态。
5.调度需要支持调度时间建议,避免出现上游任务9:00跑,下游依赖任务配置为8:00跑的情况出现。
6.在同一个调度任务里面,调度需要支持条件判断该调度后续脚本是否需要继续执行,比如定时采集数据的系统,可能两轮的数据并没有发生变化,那么就没必要进行后续的逻辑计算,比如参考华为DGC里面的方案。
7.某个调度任务下线,需要判断是否下游的调度任务已经下线,否则不允许下线。
8.调度任务下线需要记录下线的人以及时间。
9.调度的命名最好跟表命名一致,可参考job_表名的方式。
10.调度需要支持补数,尤其是分区表对过去数据逻辑的重算,设置时间范围可以自动重跑。
11.数据入仓、出仓、数据清洗的调度要分开,方便做集群迁移或者开发平台迁移后可进行双跑,验证数仓内数据,对业务无影响。
12.调度依赖支持自动解析依赖关系,可减少人工配置的失误,这就要求调度维护表和调度的关系。