当前位置:主页 > 查看内容

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

发布时间:2021-06-28 00:00| 位朋友查看

简介:本篇文章介绍了DataWorks的跨周期依赖的三种模式 一层子节点依赖、本节点自依赖和自定义依赖。同时介绍了跨周期依赖的5个典型应用场景 并包含了操作演示 最后给出了3个配置依赖的建议。 分享人 DataWorks技术支持团队 我们在开发者社区学习路线里有发布一个D……

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

分享人 DataWorks技术支持团队


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


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

幻灯片2.PNG

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

幻灯片4.PNG

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

幻灯片5.PNG


一、依赖一层子节点


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

幻灯片6.PNG

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

幻灯片7.PNG

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

幻灯片8.PNG


二、自定义依赖


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

幻灯片9.PNG


三、本节点依赖


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

幻灯片10.PNG

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


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

?image.png

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

image.png


四、5个典型场景

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

?

场景一 依赖一层子节点

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

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

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

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


五、实操演示

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

?

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png


六、Tips

最后有几个建议。

?

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

?

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

?

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

幻灯片12.PNG

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

DataWorks部门主群二维码.JPG

感谢大家的关注



本文转自网络,原文链接:https://developer.aliyun.com/article/784939
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:聊一聊全球加速GA的带宽包选择 下一篇:没有了

推荐图文


随机推荐