配置调度依赖时,需要根据本节点输出名称作为关联项来给任务间设置依赖关系。本文将为您介绍如何配置任务调度依赖的输入输出。
配置任务的本节点输入
您可以通过以下两种方式配置本节点输入:
使用代码自动解析功能,解析出任务的依赖。
手动输入任务依赖(手动输入父节点的本节点的输出名称)。
手动输入上游节点时,输入的是父节点的本节点的输出名称。如果父节点的任务名称和父节点的本节点输出名称不一致,请务必正确输入本节点输出名称。
配置上游节点时,如果自动解析出来的上游节点是一个无效的上游依赖。您可以查看解析出来的上游依赖在父节点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任务的本节点输出默认为工作空间名.节点名
。
注意事项
当任务依赖配置完成后,提交的窗口会有一个选项:当输入输出和代码血缘分析不匹配时,是否确认继续执行提交操作。
该选项的前提是您已经确认依赖关系正确。如果不能确认,则可以按照上述方法确认依赖关系。
确认依赖关系无误后,直接勾选我确认继续执行提交操作,并单击确认。