设置调度依赖最佳实践

配置调度依赖时,需要根据本节点输出名称作为关联项来给任务间设置依赖关系。本文将为您介绍如何配置任务调度依赖的输入输出。

配置任务的本节点输入

您可以通过以下两种方式配置本节点输入:

  • 使用代码自动解析功能,解析出任务的依赖。

  • 手动输入任务依赖(手动输入父节点的本节点的输出名称)。

配置本节点输入

说明

手动输入上游节点时,输入的是父节点的本节点的输出名称。如果父节点的任务名称和父节点的本节点输出名称不一致,请务必正确输入本节点输出名称。

配置上游节点时,如果自动解析出来的上游节点是一个无效的上游依赖。您可以查看解析出来的上游依赖在父节点ID一列是否显示有值,来识别设置的依赖是否有效。

配置任务依赖实质上是给两个节点设置依赖关系。只有真实存在的节点,才能够设置有效的依赖关系。

无效的上游依赖

无效的上游依赖通常有以下两种情况:

  • 父节点不存在。父节点不存在

  • 父节点输出不存在。父节点输出不存在

通常由于解析出来的父节点输出名称不存在,会导致上游依赖无效。本示例中,由于表project_b_name.pm_table_b没有产出任务,或该表产出任务的本节点输出的配置不正确,导致无法解析出来。

您可以通过以下两种方案解决该问题:

  • 确认该表是否有产出任务。

  • 确认该表产出任务的本节点输出名称,将该本节点的输出名称手动输入到依赖的上游节点中。

说明

手动输入上游节点时,输入的是父节点的本节点的输出名称。如果父节点的任务名称和父节点的本节点输出名称不一致,请务必正确输入本节点输出名称。

例如,上游节点A的本节点输出名称是A1,下游节点B需要依赖A,此时应该在依赖上游节点的输入框中输入A1,并单击右侧的加号进行添加。

配置上游依赖

如果您的表不存在上游,您可以通过单击使用工作空间根节点获得上游依赖。配置上游依赖

配置任务的本节点输出

本节点名称、本节点输出名称和本节点输出表名共用同一个名称,可以高效配置本节点输出。

  • 能够快速地知道该任务操作的是哪个表。

  • 能够快速知道该任务失败后造成的影响范围有多大。

  • 使用自动解析配置任务依赖时,只要本节点输出符合三名合一的规则,即可提升自动解析的精准性能。

自动解析

自动解析:通过代码自动解析调度依赖关系。

自动解析的实现原理:代码中只能拿到表名,自动解析功能可以根据表名解析出对应的产出任务。

类型节点代码如下所示。

INSERT OVERWRITE TABLE pm_table_a SELECT * FROM project_b_name.pm_table_b ;

解析出来的依赖关系如下。依赖关系

DataWorks会自动解析本节点,即依赖project_b_name产出pm_table_b的节点,同时本节点最终产出 pm_table_a ,因此父节点输出名称为project_b_name.pm_table_b,本节点的输出名称为project_name.pm_table_a(本工作空间名称为test_pm_01)。

  • 如果您不想使用从代码解析到的依赖,则选择

  • 如果代码中有很多表是临时表:如t_开头的表为临时表。则该表不会被解析为调度依赖。可以通过项目配置,定义以什么形式开头的表为临时表。

  • 如果代码中的一个表,既是产出表又是被引用表(被依赖表),则解析时只解析为产出表。

  • 如果代码中的一个表,被多次引用或者被多次产出,则解析时只解析一个调度依赖关系。

说明

默认情况下,表名为t_开头的会被当成临时表,自动解析不解析临时表。如果t_开头不是临时表,请联系自己的项目管理员到工作空间配置页面进行修改。工作空间配置

删除某表的输入输出

您在进行数据开发时,经常会用到静态表(数据通过本地文件上传到表中),这部分静态数据没有产出任务。

配置依赖时,您需要删除静态表的输入:如果静态表不满足t_的格式,不会被处理为临时表,此时您需要删除静态表的输入。

您在代码中右键单击表名,选择删除输入删除输入

如果您是从DataWorksV1.0升级至DataWorks V2.0的用户,则您迁移过来的DataWorks任务的本节点输出默认为工作空间名.节点名默认设置

注意事项

当任务依赖配置完成后,提交的窗口会有一个选项:当输入输出和代码血缘分析不匹配时,是否确认继续执行提交操作。

该选项的前提是您已经确认依赖关系正确。如果不能确认,则可以按照上述方法确认依赖关系。确认依赖关系

确认依赖关系无误后,直接勾选我确认继续执行提交操作,并单击确认