依赖某节点同周期指本节点本周期运行,依赖上游节点当前周期的数据产出情况(即任务执行情况),待上游当前周期实例执行成功后,本节点才会运行。通常,若当前任务需依赖上游任务同周期产出的表数据时,可为当前任务设置依赖该上游任务的同周期任务。DataWorks提供多种同周期依赖配置方式,并支持依赖预览功能,您可及时查看并调整有误依赖,保障任务调度符合预期。本文为您介绍同周期依赖的注意事项、配置原理、配置方式等内容。
注意事项
为保障调度依赖配置过程流畅,您需先了解调度依赖配置指引。
同周期依赖在DataWorks的DAG图中以实线的形式展示。
部分复杂场景下,当同周期依赖不满足预期时,您可设置跨周期依赖。例如,天任务依赖小时任务的场景下,天任务默认依赖小时任务当天所有实例。您可通过小时任务自依赖,实现天任务依赖小时任务指定周期。更多复杂场景依赖介绍,详情请参见必读:复杂依赖场景调度配置原则与示例。
为避免生产调度任务由于依赖关系不符合预期导致生产调度延迟,建议在发布任务前,通过预览依赖功能确认各周期实例关系是否符合预期。详情请参见预览依赖关系。
配置原则
为提升任务开发效率,建议您在实际开发中使用自动解析功能快速为节点设置依赖关系。基于自动解析进行实际开发时,请遵循以下原则:
节点创建:建议节点名称与节点产出表名称一致。
代码开发:避免多个节点写入数据至同一张表。
依赖配置:建议将节点产出表配置为节点的输出。
配置入口及配置说明
进入数据开发节点的编辑页面,单击右侧导航栏的调度配置,在调度依赖区域配置节点的依赖关系。
配置节点同周期依赖关系时,需在依赖的上游节点区域,定义当前任务需要依赖哪些上游任务;在本节点输出名称区域,定义其他任务可通过本节点的哪些节点输出挂载当前节点的依赖关系。
在代码编辑时,默认基于节点查询及写入的表血缘快速为节点设置依赖关系,并且会在节点提交时自动检测与识别当前依赖关系是否符合数据血缘。详情请参见血缘关系。您也可根据业务需要,选择是否启用提交任务前进行代码自动解析功能,详情请参见空间级别管控自动解析。
平台提供基于代码血缘自动解析、业务流程面板拉线、手动添加等多种方式配置依赖关系,您可按需选择。详情请参见配置方式。
若本节点需依赖上游昨天产出的数据,或小时、分钟任务依赖自己上一小时或分钟实例,可设置跨周期依赖。详情请参见配置依赖上一周期(跨周期依赖)。
依赖的上游节点
用于定义本节点的上游节点,依赖配置后,上游节点运行成功后本节点才具备运行条件。此处需填写上游节点的节点输出,作为本节点的输入。配置依赖的上游节点时请注意:
所有节点都需要配置依赖的上游节点:建议根据表血缘关系配置,若无表血缘关系,可基于业务需求选择依赖工作空间根节点或虚拟节点,详情请参见调度依赖配置指引。
请确保依赖的上游节点已提交:提交任务时,若报错依赖的上游节点输出不存在,请确保需依赖的上游节点已提交。
配置方式如下图。当使用自动推荐功能设置上游依赖时,需确保要依赖的上游任务已提交发布至生产环境,并真实产出该表数据。被推荐的节点需在前一天提交至调度系统,待第二天数据产出后,才可被自动推荐功能识别。因此,自动推荐的节点存在T+1的延迟。
本节点输出
本节点的输出是其他节点与本节点建立依赖关系的媒介。其他节点可通过本节点的输出名称找到本节点,并通过调度依赖配置,将本节点设置为他的上游节点。下游节点设置当前节点依赖后,待下游节点提交完成,当前节点对应的节点输出将展示该下游节点名称。DataWorks不支持手动在节点输出界面编辑下游节点。配置方式如下图。
若工作空间存在同名节点,可能导致节点输出同名而提交失败。删除已存在下游依赖的节点输出可能造成严重影响,详情请参见附录三:删除或变更节点输出的影响。
配置原理
调度依赖配置是将上游节点的输出作为下游节点的输入,形成节点依赖,建议您根据节点查询及写入的表血缘设置节点的调度依赖关系。配置完成后,上游节点运行完成且运行成功,下游节点才会启动运行,保障调度任务在运行时能取到正确的数据。确认表血缘,详情请参见血缘关系。
您可通过如下三种方式配置,无论哪种方式,其原理不变。
配置方式 | 说明 |
该方式DataWorks将自动为下游节点添加上游节点后缀为_out的输出,形成节点依赖。 | |
该方式DataWorks将自动解析节点代码中的表血缘,通过血缘关系配置调度依赖。 | |
通常,当通过自动解析生成的节点调度依赖配置与实际应用不符时,您可使用该方式修改调度依赖。 |
配置方式
通过业务流程面板拉线设置节点依赖
在业务流程面板使用拉线方式设置依赖关系时,DataWorks将自动为下游节点添加上游节点_out格式的输出,形成节点依赖。
当业务流程面板中的依赖连线删除后,节点调度配置中也会同步删除该依赖关系。
通过调度配置界面手动添加上游节点依赖
在调度配置界面,通过输入某节点的节点输出,手动添加依赖的上游节点,格式为projectname.tablename。
通过自动解析功能基于表血缘设置节点依赖
DataWorks支持通过节点代码中的表血缘快速设置节点依赖。开启自动解析后,节点产出的表将被自动添加为projectname.tablename格式的节点输出;节点查询的表将被自动添加为节点输入。例如,SELECT一张表,该表将被自动解析为本节点依赖的上游;INSERT一张表,该表将被自动解析为本节点的输出。各类型节点自动解析支持的关键字,详情请参见各类型节点自动解析场景。
通过自动解析配置节点依赖的相关介绍如下:
通过自动解析配置节点依赖
自动解析方式配置节点依赖如下图。
修改自动解析的依赖关系
当自动解析的依赖关系不符合预期,或存在不支持调度依赖的场景(非周期性调度产出数据的表)需手动删除依赖关系时,您可参考以下内容修改自动解析的依赖关系。
场景及方式
描述
操作及结果示例
开启自动解析时,通过代码删除输入输出
在代码中执行删除或添加操作,并重新解析。
删除或添加后,自动添加相应注释至自动解析的结果中:
--@exclude_input=删除输入
--@exclude_output=删除输出
--@extra_output=添加输出
--@extra_input=添加输入
关闭自动解析时,编辑自动解析的输入输出
DataWorks不支持直接删除已存在下游依赖的节点输出,直接删除将导致下游任务执行或取数异常。
建议您先调整下游业务,在下游节点移除该上游依赖,再在上游节点删除该节点输出。
不纳入自动解析的场景
DataWorks中的临时表(即工作空间表管理中定义的固定格式的表。例如,
t_
开头的表),不会被自动解析为本节点的输出或依赖的上游节点。自动解析使用注意事项
使用自动解析设置依赖关系时,需保障节点输出在当前地域下唯一。在DataWorks开发场景下,使用自动解析需注意以下问题:
节点创建:节点默认自带一个同名的节点输出,若同一个工作空间存在同名节点,需手动修改其中一个节点的节点输出。
代码开发:自动解析会将节点的产出表作为节点输出。若同一个工作空间中,两个调度节点往同一张表插入数据,自动解析场景下将导致其中一个节点产生报错,详情请参见多个节点往同一张表写数据,自动解析报错节点输出名相同。
依赖配置 :对于使用SQL任务加工离线同步任务的产出表的场景,为了方便SQL任务对离线同步任务产出表进行加工时,可通过血缘自动解析快速依赖离线同步任务,您需手动将离线同步节点的产出表配置为节点输出,或者将离线同步任务产出表名作为离线同步任务节点名(平台会自动创建与节点名相同的节点输出),否则下游SQL节点提交时可能报错当前节点依赖的父节点输出名${projectname.tablename}不存在,不能提交本节点,请确保拥有该输出名的父节点已被提交。
后续:确认依赖是否符合预期
配置完成后,为保障任务调度符合预期,您可通过以下操作验证配置是否正确:
预览依赖:避免依赖关系不符合预期导致任务调度延迟。
提交检查:提交节点时确认依赖变更是否符合预期。
周期任务依赖确认:节点发布后,需在运维中心确认生产调度任务的依赖是否符合预期。周期任务为生产环境该任务的最新状态,同时,周期实例的实例依赖关系与实例生成方式有关。
更多详情请参见调度依赖关系确认。
附录一:常见问题
更多常见问题,请参见调度依赖。
附录二:最佳实践
跨工作空间、同工作空间跨业务流程设置节点依赖,详情请参见场景3:如何配置跨业务流程、跨工作空间的调度依赖。
附录三:删除或变更节点输出的影响
当节点产出的表数据变更导致节点输出的变更,或直接手动修改节点输出时,请注意以下内容:
删除节点输出对节点产出的表数据无直接影响。
若节点输出已存在下游依赖,此时变更或删除可能会对下游任务产生严重影响。
节点产出表删除:当自动解析的节点输出,由于节点产出表变更导致节点输出变更时,可能会导致下游变为孤立节点不被调度,或由于下游任务缺少数据依赖导致下游被数据污染。
节点产出表变更:若当前节点产出的表需转移至其他节点,请参考删除或变更节点输出的影响进行操作。
若某节点输出存在下游依赖,删除该输出名称时,建议提前与下游任务的责任人进行沟通,告知其当前任务的某个输出要删除,请及时调整下游任务的依赖关系,避免下游任务变为孤立任务。