原文大佬的这篇DS数仓任务编排规范有借鉴意义,这里摘抄下来用作学习和知识沉淀。
前言
在使用DolphinScheduler(以下简称DS)做数仓任务管理时,数据建模分层落地到调度上缺少规范,往往比较随意,例如将所有任务节点写到一个工作流里,或将每个逻辑节点单独定义一个工作流等。下文基于数仓建模标准的方法论,构建一套用于DS管理数仓任务的规范。
一、海豚调度数仓任务现状分析
在使用调度能力的时候,一些常见的场景如下:
1.1 一个任务流构建数仓所有的逻辑节点
DS中有任务血缘的概念,这个概念和数据血缘有许多类似的地方;在构建调度任务的时候,用户容易将任务血缘和数据血缘混淆,希望在构建数仓生命周期的时候,通过任务血缘呈现出数据血缘的关系,这导致丢失了数据建模规范的分层管理。
类似例子如下:
单个工作流:
包含所有计算逻辑:
优点:这样做的好处是可以在一个工作流里直观的复现数据建模;
缺点:对于数据管理困难,只能人为的观察定位数据情况;任务运行异常后,容错困难,要排查所有的逻辑节点,并将计算逻辑回滚,这是特