Dataworks调度能力升级——分支节点

本文涉及的产品
大数据开发治理平台 DataWorks,不限时长
简介: 在学习一门新的编程语言时,经常能在基础语法中看到赋值、分支、循环等语法。那用DataWorks进行数据开发的过程中,如何完成分支、赋值等操作呢?

分支节点登场

在日常Dataworks的使用过程中,经常会有同学遇到如下的问题:我有一个节点,需要每个月的最后一天执行,应该如何设置?

这种情况我们一般的回复是:由于cron表达式无法表达这种场景,所以暂时无法支持。

但是,现在我们有了分支节点,它让我们可以套用switch-case的编程模型来搞定这个问题。下面有请分支节点和他的小兄弟们粉墨登场!!!

分支节点的兄弟们

现在打开“数据开发”页面,可以看到“控制节点”一栏多了几个新面孔,先来一张合影:

image

他们分别是:

  1. 能把自己的结果传给下游的赋值节点 —— 赋值节点复用了节点上下文依赖的特性,在已有常量/变量两种上下文的基础上,赋值节点自带一种自定义的上下文输出。Dataworks会捕获赋值节点的select结果或者打印结果,把这个结果以outputs作为上下文输出参数的值供下游节点引用。
  2. 能决定哪些下游正常执行的分支节点 —— 分支节点复用了Dataworks上挂依赖的输入输出的特性,对于普通节点,节点的输出仅仅是一个全局唯一的字符串。当下游需要挂依赖时,搜索这个全局唯一的字符串作为节点的输入就能挂到下游节点列表中。但是对于分支节点,我们可以给每个输出关联一个条件,当下游挂依赖时可以选择性的把某一个条件关联的输出作为当前节点的输出。这样达到的效果时,在成为分支节点下游的同时,也关联到了分支节点的条件上:即满足了这个条件,这个输出对应的下游才会被正常执行;其他为满足条件的输出对应的下游会被置为空跑。
  3. 无论上游是否正常执行本身都会正常调度的归并节点 —— 对于未被分支节点选中的分支,Dataworks会把这个分支链路上所有的节点实例均置为空跑实例,也就是说一旦某个实例的上游有一个实例是空跑的话,它本身也会变为空跑。我们添加了归并节点来阻止这个空跑的属性无限制的传递下去,对于归并节点实例,无论它的上游有多少个空跑的实例它都会直接成功并且不会再把下游置为空跑。

下面这张图可以示意在有分支节点的情况下,依赖树会变成什么样

image

  • ASN:一个赋值节点,它可以对比较复杂的情况做计算,为分支节点条件选择做准备
  • X/Y:分支节点,他们挂在赋值节点ASN下面,根据赋值节点的输出做分支的选择。如图,X 节点选择了左边的分支、Y节点选择了左边两个分支

    • A/C节点由于挂在了X/Y节点被选择的输出下面,因此正常执行
    • B节点虽然挂在了Y节点被选择的分支下面,但由于X节点未选择这个输出,因此B节点被置为空跑
    • E节点由于未被Y节点选中,因此即使有一个普通的Z节点上游,也同样被置为了空跑
    • G节点由于上游E节点空跑,因此即使C/F都正常执行,E节点同样把空跑
    • 至于空跑属性什么情况下才能不再向下传递呢?看JOIN节点,这是一个归并节点,它的特殊功能就是停止空跑属性的传递,可以看到由于D节点挂在了JOIN节点下面,因此B节点的空跑属性被阻断了,D开始正常跑了

好了分支节点的兄弟们已经介绍完毕,接下来看他们通力合作,解决某个节点只有每个月最后一天跑场景。

分支节点使用

image

首先定义一组任务依赖:

  1. 根节点赋值节点来通过定时时间SKYNET_CYCTIME来计算当前是不是本月的最后一天,如果是则输出1,不是则输出0。这个输出会被Dataworks捕获,传递给下游。
  2. 分支节点通过赋值节点的输出来定义分支
  3. 两个shell节点挂在分支节点下面,分别执行不同的分支逻辑

定义赋值节点

赋值节点新建时会自带一个outputs,赋值节点的代码支持SQL/SHELL/PYTHON三种

  • 对于SQL类型,Dataworks捕获最后一条SELECT的SQL作为outputs的值
  • 对于SHELL/PYTHON类型,Dataworks捕获最后一行标准输出作为outputs的值

这里采用PYTHON类型作为赋值节点的代码,调度属性和代码如下:
代码
image

调度属性
image

定义分支

分支节点可以用简单的PYTHON语法的表达式定义条件,每个条件会绑定一个输出,意味着当满足这个条件时改输出下的下游节点会被执行起来,而其他的会被置为空跑。
调度配置

image

分支配置

image

再来看一遍调度配置

image

挂在不同分支下面

最后,给真正执行任务的节点挂依赖的地方也要注意,可以看到分支节点已经有三个输出了,按照以往挂依赖的逻辑,把这三个输出中的任意一个当做输入即可;但是由于现在分支节点的输出关联了条件,所以要慎重选择。

每月最后一天执行的节点依赖

image

每月其他时间执行的节点依赖

image

Show Time

现在到了见证奇迹的时刻,发布之后,我们执行一下补数据,业务日期选择2018-12-30和2018-12-31,也就是定时时间分别为2018-12-31和2019-01-01,这样第一批补数据应该是会触发“最后一天”的逻辑,第二批触发“非最后一天”的逻辑,我们看看两者的区别。

业务日期2018-12-30(定时时间2018-12-31)

分支节点分支选择结果
image

节点“最后一天执行”正常执行
image

节点“除了最后一天之外运行”被置为空跑
image

业务日期2018-12-31(定时时间2019-01-01)

分支节点分支选择结果
image

节点“最后一天执行”被置为空跑
image

节点“除了最后一天之外运行”正常执行

image

总结

好了,基于分支节点,我们已经实现了“每个月最后一天”执行的这一目标,当然这只是分支节点最简单的使用方法。基于赋值+分支,可以组合出各种各样的条件满足业务上的需求,期待大家一起发掘分支节点的能力。

最后,再回顾一下分支节点相关的要点:

  1. Dataworks捕获赋值节点的最后一条SELECT语句或者最后一行标准输出流作为赋值节点的输出供下游引用
  2. 分支节点的每一个输出都被关联了条件,下游挂分支节点作为上游,需要了解每个输出关联的条件的意义再选择
  3. 未被选中的分支会被置为空跑并且空跑属性会一直向下传递,直到遇到归并节点
  4. 归并节点除了阻断空跑属性外,还会有更多的超能力,一起期待吧!
相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
一站式大数据开发治理平台DataWorks初级课程
DataWorks 从 2009 年开始,十ー年里一直支持阿里巴巴集团内部数据中台的建设,2019 年双 11 稳定支撑每日千万级的任务调度。每天阿里巴巴内部有数万名数据和算法工程师正在使用DataWorks,承了阿里巴巴 99%的据业务构建。本课程主要介绍了阿里巴巴大数据技术发展历程与 DataWorks 几大模块的基本能力。 课程目标  通过讲师的详细讲解与实际演示,学员可以一边学习一边进行实际操作,可以深入了解DataWorks各大模块的使用方式和具体功能,让学员对DataWorks数据集成、开发、分析、运维、安全、治理等方面有深刻的了解,加深对阿里云大数据产品体系的理解与认识。 适合人群  企业数据仓库开发人员  大数据平台开发人员  数据分析师  大数据运维人员  对于大数据平台、数据中台产品感兴趣的开发者
目录
相关文章
|
25天前
|
DataWorks 机器人 调度
DataWorks的集成任务并发度设置主要影响的是**调度资源组**。
【2月更文挑战第34天】DataWorks的集成任务并发度设置主要影响的是**调度资源组**。
12 1
|
1月前
|
SQL 运维 DataWorks
DataWorks常见问题之dataworks运维中心指定时间“运行到该节点”失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
28天前
|
DataWorks 关系型数据库 分布式数据库
在DataWorks中,如果节点成环,即某个节点既是上游节点又依赖了自己的下游节点
【2月更文挑战第31天】在DataWorks中,如果节点成环,即某个节点既是上游节点又依赖了自己的下游节点
16 6
|
1月前
|
分布式计算 DataWorks 数据可视化
DataWorks常见问题之dataworks三个节点运行失败没法终止如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
分布式计算 DataWorks 大数据
DataWorks报错问题之升级工作空间模式报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
JSON 分布式计算 DataWorks
DataWorks常见问题之依赖的自动节点修改为统一调度节点失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
SQL 分布式计算 DataWorks
DataWorks常见问题之dataworks连接FTP服务器失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
SQL 分布式计算 DataWorks
DataWorks常见问题之dataworks自定义函数运行时报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
SQL DataWorks 关系型数据库
DataWorks常见问题之dataworks同步Rds任务失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
分布式计算 DataWorks 调度
DataWorks常见问题之dataworks运行报错 system internal error 如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。

热门文章

最新文章