开发者学堂课程【DataWorks 一站式大数据开发治理平台精品课程:1.DataWorks 调度依赖的基本使用】与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/81/detail/1238
1.DataWorks 调度依赖的基本使用(一)
内容介绍:
一、为什么需要设置调度依赖
二、如何设置调度依赖
三、常见问题
一、为什么需要设置调度依赖
1、为什么需要设置调度依赖
(1)设置调度依赖是为了保障业务数据有效、适时地产出,形成规范化的数据研发场景。这里针对的是调度的场景,也就是表数据每天都有更新这种情况,就是为了保障每个节点在取数时都能取到准确的数据。
(2)当前节点去 select 附表时附表数据已经产出,规范的依赖关系配置后,无需关心当前节点需要依赖表由哪个节点产出,通过 DataWorks 自动解析一键为您设置任务依赖。
2、调度依赖在 DataWorks 上的具体实现
(1)产出table_ B数据的节点B任务执行完成,平台默认数据已经准备就绪,下游需要依赖该表数据的节点(表)可以开始取数了。
(2)观念转变“表之间依赖”转换为“产出表数据的节点之间依赖” XC_ rpt user_ info_ d这个节点产出了表的数据,如果表数据需要正确的取到数据,那上游的这些节点需要正确的执行。
(3)问题:如何通过表找到产出该表数据的节点,挂上节点依赖呢?
3、调度依赖的原理
(1)Dataworks 上通过节点输出来挂依赖的上游节点的输出作为下游节点的输入形成依赖关系。
(2)场景示例:
当前节点B产出 table_ B数据,table_ B 数据依赖 table. A ,那么我们将产出表table_ A数据的节点作为当前节点B的上游依赖。
(3)问题:
我知道需要依赖这个表数据,也知道这个表数据由哪个节点产出,但是我不可能每次需要依赖表的时候,都打开这个节点找到他的输出设置依赖关系,团队协同开发的时候,这样也是不可能的。怎么办呢? 比方现在当前项目需要依赖另一个项目的某一张表,那不可能专门找到表,那去问它产出表述里的节点,它的节点输出是什么?也不可能就为了挂一个节点依赖将它加入到项目,那这种场景应该怎么办?
二、如何设置调度依赖
1、依赖关系设置的几种方式
(1)自动解析
(2)自定义依赖
(3)拉线设置依赖
拉线设置依赖关系是包括在自定义里面的,但是由于拉线设置依赖关系的场景比较多,用户用的比较多,所以这里单独拿出来说明。
2、自动解析
(1)insert overwrite table table_ a as select * from project_ b. _name.table_ ,b;
(2)血缘关系:
查询project_ b_ name.table. b的数据写入table_ a.
(3)自动解析:
project. b. _name.table_ b会作为该节点输入,格式为project. _b. name.table. _b ;
table_ a会作为该节点的输出,格式为project a _name.table. a
当前table a的数据是依赖于项目b下面的table b的数据,自动解析时候会将table表作为节点的输出,格式是项目名点表明,当前节点selecttable b的表作为节点的输入,也就是父节点的输出。这样自动解析会将输入和输出挂好。
3、自动解析与依赖关系
上游节点insert ods_log_info_d这张表,将表作为节点的输出,下游正好又用到了ods_log_info_d这张表,将它表里的数据选取了部分写入到了dw_user_info_all_d这张表。在这里,自动解析会将当前节点select ods_log_info_d这张表作为当前节点的上游,也就是在父节点依赖着,会加上这一条项目名点表明的输入,通过输入可以找到父节点,从而挂上依赖线,这样自动解析和依赖关系就可以因为一键设置任务依赖。
4、推进自动解析的原因
根据代码的逻辑,判断您在当前节点需要产出某张表。当您以project_name.tablename 的方式将其作为本节点输出时,后续其它节点需要查询该表时, 您无需关注要依赖哪个节点,您只需要关注要依赖该表当前周期产出的数据。
当您无法确定当前工作空间产出该表数据的具体节点时,您可以使用自动解析,帮助您快速开发业务流程。
使用自动解析该操作的前提是遵循自动解析规范,也就是产出一张表的数据,一定要将这张表作为节点的输出,方便下游再去挂依赖关系。
同地域的工作空间支持自动解析依赖关系,即支持同地域跨工作空间配置节点调度依赖关系。
5、自定义依赖
(1)代码编辑输入输出
(2)手动添加上游依赖
(3)自动推荐
自定义依赖有三种,就是代码中直接编辑输入输出,手动添加上游依赖,还有就是自动推荐。第一点就是在代码里面直接编辑输入输出。第二种就是在依赖的上游这里手动添加上游的输出表名,还有自动推荐按钮。