且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

更新时间:2022-06-17 23:24:05

本篇文章介绍了DataWorks的跨周期依赖的三种模式:一层子节点依赖、本节点自依赖和自定义依赖。同时介绍了跨周期依赖的5个典型应用场景,并包含了操作演示,最后给出了3个配置依赖的建议。

分享人:DataWorks技术支持团队


我们在开发者社区学习路线里有发布一个DataWorks的学习路线,里面包含了入门讲解和熟能生巧系列的直播内容,大家可以去学习一下,需要主账号登陆学习哦:https://developer.aliyun.com/learning/course/81


首先我们来看一个场景,需求是A节点依赖C节点上一周期,C节点依赖A节点,而实际配置时可能会出现下方右图的错误情况,多出来一条C节点依赖自己的上一周期的自依赖线。在对配置上一周期依赖不熟悉的情况下,重复配置依赖,配置多余依赖或者节点成环警告等情况都有可能发生。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

DataWorks有两种依赖关系,一种是跨周期依赖,一种是本周期依赖。在调度配置面板中有一个“依赖上一周期”的钩子,配置跨周期依赖时勾选,勾选后会出现“依赖项”的选项,可选“一层子节点”、“本节点”或“自定义”。通常跨周期依赖指依赖前一天的数据。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

依赖上一周期(跨周期依赖)有三种模式:一层子节点、本节点和自定义。一层子节点相对于其他两种模式应用得比较少;本节点部分会介绍两个自依赖的应用技巧;自定义依赖需要保证依赖的节点在线上实际存在。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖


一、依赖一层子节点


在周期任务中对C1节点配置依赖一层子节点,它的子节点是D1和E1,那生成实例后,在周期实例中C1节点下游是D1和E1的本周期,上游除了B1还会依赖D1和E1的T-1周期,虚线就是跨周期依赖的意思。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

我们通过实际业务讲解一下这种实例关系。下图是某电商业务中B1、C1、D1这3个节点4天产生的效果图,业务日期从8月1号流向4号。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

截取中间部分观察,三张表对应三个产出任务的节点,B1是事件日志表,C1是每日新增点击表,D1是每日新增点击用户表。在调度配置上给C1配置了依赖一层子节点,它的子节点是D1,所以会依赖D1的T-1周期,即8月3号的C1实例任务依赖8月2号D1实例产生的数据,即图中虚线表示的跨周期依赖,这个依赖业务上是为了保证获取到截止上周期的所有老用户信息,这样才能够保证过滤出新用户流向下游。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖


二、自定义依赖


可以直接输入依赖的上游节点ID,这个ID要保证线上存在。这里对C2节点配置自定义,把A 2的ID输入进去,然后C2会依赖于A2的T-1周期。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖


三、本节点依赖


即依赖当前节点的上一周期。这里对C3配置自依赖,那C3会依赖C3的T-1周期,C3的T-1周期依赖C3的T-2周期。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

接下来看两个自依赖的应用技巧:(详细内容可在DataWorks百问百答02期看到:https://developer.aliyun.com/article/749508


第一个是小时任务依赖天任务。上游天任务跑完,下游小时任务多个小时任务周期定时时间已到,如果不希望小时任务多周期并发调起,就需要配置自依赖,让它们一个个按顺序执行。

 DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

第二个是天任务依赖小时任务,天任务定时配置了12点。按照普通配置,天任务需要等上游所有的实例运行后才开始运行,但如果该天任务必须要12点开始跑,就需要对上游的小时任务配置自依赖。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖


四、5个典型场景

跨周期依赖有5个典型应用场景,它们也满足了大部分的应用需求。

 

场景一:依赖一层子节点

场景二:天任务依赖小时任务(同周期)

场景三:天任务依赖小时任务昨天的数据(跨周期)

场景四:小时任务依赖天任务

场景五:本节点依赖自己上一周期产出的数据,但不知道上一周期何时产出。可以对本节点配置依赖上一周期,选择“本节点”即可。


五、实操演示

下面实操介绍一下场景三,天任务依赖小时任务昨天的数据,它的配置方法是下游天任务配置“依赖上一周期”选“自定义”,填上游小时任务的ID即可。

 

首先进入DataStudio,新建一个业务流程,然后新建一个虚拟节点、一个小时任务和一个天任务。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

然后配置小时任务。重跑属性和上面一样,调度周期选择小时,每小时一个,一共24个实例。这里小时任务需要挂在虚拟节点下面,所以到虚拟节点来复制它的本节点输出名,粘贴到小时任务的“依赖的上游节点”输入框出配置依赖,另外只有被提交过的任务,才可以搜索到然后添加依赖。最后保存、提交。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

然后配置天任务。还是一样重跑属性,调度周期是天,注意这边实例生成方式是都是T+1次日生成。另外因为配置的是跨周期依赖,所以选择依赖上一周期,选择自定义,然后获取一下小时任务的节点ID,小时任务的ID同样也是需要小时任务提交后才能获取到。此时天任务本周期的上游依赖是空的,这是不允许的,这里因为实际天任务没有同周期上游,所以建议天任务上游配置这里挂在一个虚拟节点上,这里为了演示方便,直接使用根节点作为天任务上游。然后保存、提交。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

随后进入任务发布界面,可以看到刚刚提交的三个节点。由于跨周期依赖所填的节点ID必须保证线上存在,所以要先发布虚拟节点和小时任务,然后再发布天任务,这样天任务发布才不会报错。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

然后复制一下天任务的节点ID,可以到运维中心查看一下周期任务的关系图。由于是设置的T+1天生成实例,所以还看不到实例效果图。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

我们找一个之前配置好的节点的实例看一下。下图是最后会产生的效果图,有24个小时任务和一个虚拟节点,除了虚拟节点外24个小时任务都是虚线,而下游是天任务,这是符合预期的。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖


六、Tips

最后有几个建议。

 

第一,跨周期依赖中容易遇到提交报错无上游的情况,这时可以新建一个虚拟节点作为上游。

 

第二,跨周期依赖和本周期依赖不要重复配置依赖。

 

第三,上游为分支节点,分支配置了跨周期依赖建议勾选“上游空跑属性不进行跨周期传导”。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

以上就是本次分享的全部内容了,有问题需要解答的同学可以扫码加一下我们的钉钉大群,群里有直播回放可以观看。

DataWorks熟能生巧系列直播第二期:DataWorks调度依赖之跨周期依赖

感谢大家的关注!