DataWorks调度依赖配置深度解析

本文涉及的产品
大数据开发治理平台DataWorks,Serverless资源组抵扣包300CU*H
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 规范的依赖关系配置后,您无需关心当前节点需要依赖表由哪个节点产出,通过DataWorks自动解析将一键为您设置任务依赖。

一、为什么需要设置调度依赖

设置调度依赖是为了保障业务数据有效、适时地产出,形成规范化的数据研发场景。
换句话说就是为了保障下游节点执行时上游数据已经正确产出,避免下游节点取上游数据时上游数据还未产出导致出现数据质量问题。
规范的依赖关系配置后,您无需关心当前节点需要依赖表由哪个节点产出,通过DataWorks自动解析将一键为您设置任务依赖。

那dataworks上是怎么知道上游数据什么事后产出的呢,我们再来具体看下调度依赖在dataworks上的具体实现。

1.1调度依赖在DataWorks上的具体实现

在DataWorks上,产出table_B数据的节点B任务执行完成,平台默认数据已经准备就绪,下游需要依赖该表数据的节点(表)可以开始取数了。

这里有个观念的转变需要注意:

“表之间依赖”转换为“产出表数据的节点之间依赖”

那如何通过表找到产出该表数据的节点,
挂上节点依赖呢?
我们先来看下节点是如果设置上下游依赖。

二、如何设置节点调度依赖

节点依赖是在下游节点去依赖上游节点,Dataworks上通过节点输出来挂依赖的。
上游节点的输出作为下游节点的输入,这样形成依赖关系

【场景示例】
当前节点B产出table_B数据, table_B数据依赖table_A,那么我们将产出表table_A数据的节点作为当前节点B的上游依赖。

我知道需要依赖这个表数据,也知道这个表数据由哪个节点产出,但是我不可能每次需要依赖表的时候,都打开这个节点找到他的输出设置依赖关系,
团队协同开发的时候,也不可能因为需要依赖这个节点,而将该用户加入到项目,这也是不可能的。那怎么办呢?我们继续往下看

三、依赖关系设置的几种方式

我们先来了解一下导读依赖设置的几种方式:

  • 自动解析(推荐★)
  • 自定义依赖
  • 拉线设置依赖

四、自动解析

从上面我们知道了,为了当前节点取数时上游数据已经准备好,当前节点才去取上游数据,为了解决上面说到的问题,我们需要表和节点输出有更直接的关系。而自动解析就是来自动实现表和节点(方便下游用到该表时挂依赖)的关系。

我们先来了解一下 自动解析。

【自动解析】

默认将代码中select的表自动解析将作为节点输入;
默认将代码中insert的表自动解析将作为节点输出。

【示例】

insert overwrite table table_a 
as select * from project_b_name.table_b;

血缘关系:

查询project_b_name.table_b的数据写入table_a。

自动解析:

project_b_name.table_b会作为该节点输入,格式为project_b_name.table_b;
table_a会作为该节点的输出,格式为project_a_name.table_a

image.png

4.1自动解析和依赖关系

自动解析助您一键设置任务依赖关系。
上游产出该表数据,自动将该表作为节点输出,下游节点再去查这个表数据的时候,自动解析会通过该表找到产出该表数据的节点(一定要注意是否有解析出父节点id),挂上节点依赖关系。

(在这里,我们也可以知道有些自动解析的表依赖提交时候报错的原因,
是因为没有通过该表找到产出该表数据的节点
(没有解析出父节点id)。
为什么没有找到该表数据的节点呢,
因为没有一个节点将这个表作为节点输出了。)

image.png

4.2推荐自动解析的原因

1.根据代码的逻辑,判断您在当前节点需要产出某张表。当您以project_name.tablename的方式将其作为本节点输出时,后续其它节点需要查询该表时,您无需关注要依赖哪个节点,您只需要关注要依赖该表当前周期产出的数据。
2.当您无法确定当前工作空间产出该表数据的具体节点时,您可以使用自动解析,帮助您快速开发业务流程。
3.使用自动解析该操作的前提是遵循自动解析规范,也就是产出一个表数据,一定要将这个表作为节点的输出。
4.同地域的工作空间支持自动解析依赖关系,即支持同地域跨工作空间配置节点调度依赖关系(遵循自动解析规范)
【场景】

这个表数据是我本地上传的,自动解析将他解析出来了,但是提交报错依赖的父节点输出不存在
(依赖的父节点那没有解析出父节点),自动解析的依赖关系这里不能删除,该怎么办?

我们先来看一下dataworks上可以手动编辑依赖的几种方式。

五、自定义依赖

1.代码编辑输入输出
2.手动添加上游依赖
3.自动推荐

image.png

我们再回到刚刚的问题上:
【场景】

这个表数据是我本地上传的,自动解析将他解析出来了,
但是提交报错依赖的父节点输出不存在,
自动解析的依赖关系这里不能删除,该怎么办?

5.1代码中编辑输入输出

自动解析的依赖再右侧父节点依赖那块删除按钮是置灰的,但是这个表没有解析出父节点id,因为这个表是我本地上传的表数据,而DataWorsk上只有节点产出的表才能挂节点依赖。

(因为DataWorks是通过挂依赖的目的是保障下游取数时候,上游数据已经准确产出,
通过产出表数据的节点执行完成默认数据已经产出,下游节点可以正常取数了,
如果是本地上传的表数据或者不在DataWorks上产出的表,DataWorks是监控不了的哦,所以这里就只能将这个依赖删除了)。

--@extra_input=表名 --添加输入
--@extra_output=表名 --添加输出
--@exclude_input=表名 --删除输入
--@exclude_output=表名 --删除输出
image.png

手动添加上游依赖

【场景一】
需要依赖某个表数据。
【场景二】
需要依赖某个节点,不一定存在表血缘依赖。
image.png

5.2自动推荐

背景:
在DataWorks2.0版本升级时,大家对调度依赖的理解不是很好,
经常出现提交报错的问题,所以平台推出了这个“自动推荐”这个功能。

当自动解析选择为否时,您可以使用自动推荐功能自定义添加需要依赖的上游节点。
自动推荐功能会自动解析出所有已经提交并发布至生产环境,并且实际运行产出该表的节点。
说明:由于需要提交发布至生产环境并真实产出该表数据的节点,才会被解析出来,所以此处解析的节点有T+1的延迟。

image.png
image.png

5.3拉线设置依赖

在业务流程面板连线形成依赖关系后,系统会自动将上游节点的输出名称作为下游节点的上游依赖(输入),即上游节点自带的_out输出名称作为下游节点的上游依赖(输入)。

注意:拉线设置依赖的时候自动解析是默认打开的哦
image.png
image.png

调度依赖场景问题

调度依赖配置建议

• 产出表数据的节点将该表作为节点输出。(方便自动解析自动设置依赖关系)
• 一张表数据由一个节点产出

(通过自动解析知道,节点产出某张表的数据,
自动解析会默认将该表作为节点输出,
而DataWorks是通过节点输出挂依赖的,
需要通过唯一的输出定位到唯一的节点。
所以建议一张表数据由一个节点产出。
如果有场景需要某个表数据由多个节点产出的话,
记得节点输出那删除该表,确保节点输出全局唯一哦)

• 保证节点输出同region下唯一
• 建议任务名称和输出表名保持一致。

同步任务调度依赖配置

同步任务不支持自动解析设置依赖关系,所以需要手动节点产出数据的表作为节点输出,方便下游sql节点自动解析设置依赖关系。如果不想手动添加的话,可以将节点名设置为产出表名,因为对DataWorks会默认添加节点名的输出哦。
image.png

同步任务:建议节点名为该同步任务产出的表名。

输入输出和代码血缘分析不匹配的提示

【血缘关系】

表间数据来源与去向,即节点中表select和insert关系。

【血缘关系解析】

代码中select的表自动解析将作为节点输入;
代码中insert的表自动解析将作为节点输出。

【用户提交的输入输出】
用户提交的输入:调度配置界面的解析出父节点id的输出名(表)。
用户提交的输出:调度配置界面的本节点的输出名称(表)。

image.png
image.png

1.为什么会出现血缘关系和用户提交的输入输出不一致的提示?
代码中select/insert的和调度配置那父节点和输出不匹配。

2.需要我们关注什么?
确认这张表的数据源来源及是否需要依赖该表:
•本地上传的表数据或者不在DataWorks上产出的表,可忽略血缘关系不一致的提示
•是DataWorks周期调度产出的表数据,请务必再次确认产出该表数据的节点是否有将该表作为节点输出。

依赖的父节点输出不存在

报错场景:

当前节点产出dw_user_info_all_d表数据,
依赖ods_log_info_d,ods_user_info_d_1表,
其中ods_user_info_d_1表提交报错。

如果当前需要将节点提交上去不报错的解决方式:

1.自动解析设置为否(不推荐×)
自动解析设置为否---血缘关系不一致---当前节点提交正常---下游节点select表dw_user_info_all_d表---提交报错:dw_user_info_all_d不存在--数据质量问题?

2.确认该表数据来源:
【场景一】
本地上传的数据,代码中删除输入,忽略血缘关系提示,提交任务
【场景二】
找到产出表ods_user_info_d_1数据的节点,将该表作为节点输出。
image.png

节点输出相同,提交失败

•同region下同名节点需要修改一个节点的输出,因为dataworks会创建一个节点名的输出。
•一个表数据由一个节点产出,因为自动解析会将产出表作为节点输出。
image.png

自动解析需要通过唯一的节点输出定位到唯一的节点,
所以需要保障节点输出唯一,
需要修改其中一个节点的节点输出。

删除节点失败,当前节点存在下游

检查开发环境运维中心和生产环境运维中心,是否还存在下游节点依赖该需要下线的节点。
image.png

注意:运维中心跨周期依赖(虚线)依赖也需要下线哦
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
一站式大数据开发治理平台DataWorks初级课程
DataWorks 从 2009 年开始,十ー年里一直支持阿里巴巴集团内部数据中台的建设,2019 年双 11 稳定支撑每日千万级的任务调度。每天阿里巴巴内部有数万名数据和算法工程师正在使用DataWorks,承了阿里巴巴 99%的据业务构建。本课程主要介绍了阿里巴巴大数据技术发展历程与 DataWorks 几大模块的基本能力。 课程目标  通过讲师的详细讲解与实际演示,学员可以一边学习一边进行实际操作,可以深入了解DataWorks各大模块的使用方式和具体功能,让学员对DataWorks数据集成、开发、分析、运维、安全、治理等方面有深刻的了解,加深对阿里云大数据产品体系的理解与认识。 适合人群  企业数据仓库开发人员  大数据平台开发人员  数据分析师  大数据运维人员  对于大数据平台、数据中台产品感兴趣的开发者
目录
相关文章
|
9天前
|
机器学习/深度学习 调度
mmseg配置解析 Polynomial Decay 多项式衰减
Polynomial Decay(多项式衰减)是一种常用的学习率调度方法,通过多项式函数逐步减少学习率,帮助模型更好地收敛。公式为:\[ lr = (lr_{initial} - \eta_{min}) \times \left(1 - \frac{current\_iter}{max\_iters}\right)^{power} + \eta_{min} \]。参数包括初始学习率、最小学习率、当前迭代次数、总迭代次数和衰减指数。适用于需要平滑降低学习率的场景,特别在训练后期微调模型参数。
20 0
mmseg配置解析 Polynomial Decay 多项式衰减
|
11天前
|
网络协议 Docker 容器
docker中的DNS配置
【10月更文挑战第5天】
109 1
|
5天前
|
JSON JavaScript 前端开发
深入解析ESLint配置:从入门到精通的全方位指南,精细调优你的代码质量保障工具
深入解析ESLint配置:从入门到精通的全方位指南,精细调优你的代码质量保障工具
15 0
|
9天前
|
编解码 计算机视觉
mmseg配置解析 align_corners=False
`align_corners=False` 是图像插值操作中的一个参数,影响输入和输出图像的角点对齐方式。`align_corners=True` 严格对齐角点,而 `align_corners=False` 均匀分布像素点,更适用于保持整体比例关系的任务,如语义分割。
19 0
|
9天前
|
机器学习/深度学习 编解码
mmseg配置解析 contract_dilation=True
`contract_dilation=True` 是 ResNetV1c 中的一种设置,用于解决多层膨胀卷积中的“栅格效应”。通过调整膨胀率,使卷积核在不同阶段更密集地覆盖输入特征图,避免信息丢失,提升特征提取质量,尤其在语义分割任务中效果显著。
22 0
|
10天前
|
XML Java 数据格式
手动开发-简单的Spring基于注解配置的程序--源码解析
手动开发-简单的Spring基于注解配置的程序--源码解析
24 0
|
10天前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
38 0
|
10天前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
26 0
|
10天前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
25 0
|
10天前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
21 0

推荐镜像

更多