DataWorks通过各个节点的调度依赖配置结果,有序的运行业务流程中各个节点,保障业务数据有效、适时地产出。本文为您介绍DataWorks的调度依赖实现流程与主要配置原则。

为什么要配置调度依赖

调度依赖就是节点间的上下游依赖关系,在DataWorks中,上游任务节点运行完成且运行成功,下游任务节点才会开始运行。

配置调度依赖后,可以保障调度任务在运行时能取到正确的数据(当前节点依赖的上游节点成功运行后,DataWorks通过节点运行的状态识别到上游表的最新数据已产生,下游节点再去取数)。避免下游节点取数据时,上游表数据还未正常产出,导致下游节点取数出现问题。

配置节点的调度依赖时,建议根据各个节点的表数据血缘关系来规划配置节点的上下游依赖,确保满足以下原则:
  • 一张表的数据只由一个节点产出,且节点的产出表需配置为本节点的输出。
    说明
    • SQL任务会通过自动解析,将产出表作为本节点输出,无需手动配置。
    • 离线同步任务需要手动配置,将产出表添加为本节点输出。
  • 上游节点的输出作为下游节点的输入,形成节点间的依赖关系。
说明 对于没有表数据血缘关系的节点,可以根据节点运行的逻辑上下游关系规划配置节点的依赖关系,配置原则和配置后的结果与有血缘关系的节点一致。
DataWorks的调度依赖在各个节点的调度配置中进行配置,每个节点需要为其配置依赖的上游节点本节点的输出调度依赖
DataWorks支持自动解析和手动配置的方式进行调度依赖配置。
  • 理想状态下,DataWorks可根据您规范化的节点任务代码开发,识别输入输出命令(如selectinsert),根据代码识别表数据的血缘关系,以血缘关系为基座,通过自动解析自动为您配置好节点的调度依赖。
  • 特殊场景下,例如本地上传的表,表数据无需周期性调度生成数据时,您可以手动增删节点的调度配置。
在提交节点时,DataWorks会检查节点的调度依赖与节点代码中的数据血缘关系是否一致,如果出现不一致的提示,您需要根据实际情况查看是否需要修改调度依赖配置。

自动解析

对于SQL类的节点,DataWorks可根据节点中的任务代码,自动解析出当前节点的上下游依赖关系,并自动为您在节点的调度配置中添加好对应的本节点的输出依赖的上游节点

自动解析添加调度依赖的原理自动解析
  • 节点代码中存在输出命令时,如insertcreate命令,DataWorks会自动解析,将输出表添加至节点的本节点的输出
  • 节点代码中存在输入命令时,如select命令,DataWorks会自动解析,将输入表添加至节点的依赖的上游节点
  • 将上游节点的输出添加为下游节点的输入,以表数据的血缘上下游关系为基座,形成节点间的上下游依赖关系。
自动解析的结果原则上与表数据的血缘关系是一致的,您在提交节点时,DataWorks会检测节点的调度依赖配置结果与表数据血缘关系是否一致,当出现不一致提示时,您需要根据实际情况选择处理方式:
  • 节点中没有查询非周期性产生数据的表时,您需要检查调度依赖配置是否正确。
  • 节点有查询非周期性产生数据的表时,您需要通过手动配置的方式,删除此依赖。

代码开发要求与原则

自动解析完全依据您的任务节点中代码自动识别,因此您在进行数据开发时,建议严格遵循DataWorks的代码开发要求和节点创建要求:
  • 代码开发要求:一张表数据由一个节点产出,一个节点只产出一张表。
  • 节点创建要求:建议节点名称与产出表的表名称保持一致。
  • 调度配置要求:节点的产出表需配置为本节点的输出。

手动配置

DataWorks支持在节点的代码开发过程中,手动修改节点的依赖的上游节点本节点的输出。当通过自动解析生成的节点调度依赖配置与实际应用不符时,您可通过手动配置进行修改。

应用场景

由于DataWorks的调度依赖主要保障的是调度节点定时更新的表数据,通过节点调度依赖保障下游取数没有问题,所以不是DataWorks平台上调度更新的表,平台无法监控。当存在非周期性调度生产数据的表,有节点select这类表数据时,您需要手动删除通过select自动生成的依赖的上游节点配置。非周期性调度生产数据的表包括:
  • 从本地上传到DataWorks的表
  • 维表
  • 非DataWorks调度产出的表
  • 手动任务产出的表

配置方式

  • 代码编辑页面删除删除输入如上图所示,您可以在select了非周期性产出表的节点代码编辑页,右键相应的表名,进行删除输入的操作。您也可以在代码的最上方添加一条规则的注释,操作完成后自动解析将不会解析该依赖。
  • 调度配置页面删除
    手动配置如上图所示,您可以在select了非周期性产出表的节点调度配置的页面中,将自动解析开关选择为否,然后手动删除对应的依赖的上游节点

拉线配置

DataWorks支持在业务流程的页面,直接通过连线的方式,指定各个节点的上下游关系。拉线完成后DataWorks根据您的拉线结果自动为您在各个节点中添加调度依赖配置。拉线配置各个节点创建完成后,DataWorks会自动为所有节点添加一个名称后缀为_out本节点的输出,拉线指定上下游依赖时,DataWorks将自动生成的后缀为_out的输出添加为下游节点的输入中。

适用场景

当您创建完成业务流程后,您可根据业务规划,将各个节点按照节点的逻辑顺序,在业务流程页面通过拉线的方式配置好各个节点的依赖关系。后续在代码开发过程中,通过自动解析和手动修改的方式添加或修改各个节点的依赖关系,保障整体业务流程中所有节点的依赖关系是正确的。

案例说明

下面以一个具体案例为例,说明调度依赖配置后的实现流程与原理。流程示例如上图所示:
  • 节点输出需要添加到节点的本节点的输出。有输出命令时,例如insert命令时,DataWorks会自动解析,将输出表添加至节点的本节点的输出
  • 节点输入需要添加到节点的依赖的上游节点。有输入命令时,例如select命令时,DataWorks会自动需要将输入表添加至节点的依赖的上游节点
  • 将上游节点的输出添加为下游节点的输入,以表数据的血缘上下游关系为基座,形成节点间的上下游依赖关系。
上下游关系形成后,后续在业务流程周期性调度的过程中,会根据上下游顺序,优先运行上游节点。上游节点运行完成且运行成功后,开始启动下游节点运行。
通过上述流程可见,各个节点进行依赖调度配置的关键配置原则:
  • 有上下游关系的节点,上游节点的本节点的输出一定要作为下游节点的依赖的上游节点,形成节点间的上下游依赖关系。
  • 下游节点的依赖的上游节点中的父节点输出名称父节点ID要唯一(从另一方面也就要求了任一节点的节点输出名称要唯一),否则下游节点无法通过这两个信息找到正确的上游节点,取用上游节点数据。

调度依赖配置指导

通用场景的调度依赖配置可参见配置调度依赖

常见问题