DataWorks调度依赖配置深度解析

本文涉及的产品
大数据开发治理平台 DataWorks,不限时长
简介: 规范的依赖关系配置后,您无需关心当前节点需要依赖表由哪个节点产出,通过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

注意:运维中心跨周期依赖(虚线)依赖也需要下线哦
相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
一站式大数据开发治理平台DataWorks初级课程
DataWorks 从 2009 年开始,十ー年里一直支持阿里巴巴集团内部数据中台的建设,2019 年双 11 稳定支撑每日千万级的任务调度。每天阿里巴巴内部有数万名数据和算法工程师正在使用DataWorks,承了阿里巴巴 99%的据业务构建。本课程主要介绍了阿里巴巴大数据技术发展历程与 DataWorks 几大模块的基本能力。 课程目标  通过讲师的详细讲解与实际演示,学员可以一边学习一边进行实际操作,可以深入了解DataWorks各大模块的使用方式和具体功能,让学员对DataWorks数据集成、开发、分析、运维、安全、治理等方面有深刻的了解,加深对阿里云大数据产品体系的理解与认识。 适合人群  企业数据仓库开发人员  大数据平台开发人员  数据分析师  大数据运维人员  对于大数据平台、数据中台产品感兴趣的开发者
目录
相关文章
|
4天前
|
数据采集 消息中间件 监控
Flume数据采集系统设计与配置实战:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入探讨Apache Flume的数据采集系统设计,涵盖Flume Agent、Source、Channel、Sink的核心概念及其配置实战。通过实例展示了文件日志收集、网络数据接收、命令行实时数据捕获等场景。此外,还讨论了Flume与同类工具的对比、实际项目挑战及解决方案,以及未来发展趋势。提供配置示例帮助理解Flume在数据集成、日志收集中的应用,为面试准备提供扎实的理论与实践支持。
21 1
|
22天前
|
DataWorks 机器人 调度
DataWorks的集成任务并发度设置主要影响的是**调度资源组**。
【2月更文挑战第34天】DataWorks的集成任务并发度设置主要影响的是**调度资源组**。
12 1
|
24天前
|
缓存 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 配置DNS dnsconf 命令 使用教程
【Shell 命令集合 网络通讯 】Linux 配置DNS dnsconf 命令 使用教程
38 0
|
27天前
|
资源调度 算法 Linux
Linux进程/线程的调度机制介绍:详细解析Linux系统中进程/线程的调度优先级规则
Linux进程/线程的调度机制介绍:详细解析Linux系统中进程/线程的调度优先级规则
41 0
|
4天前
|
算法 Linux 调度
深度解析:Linux内核的进程调度机制
【4月更文挑战第12天】 在多任务操作系统如Linux中,进程调度机制是系统的核心组成部分之一,它决定了处理器资源如何分配给多个竞争的进程。本文深入探讨了Linux内核中的进程调度策略和相关算法,包括其设计哲学、实现原理及对系统性能的影响。通过分析进程调度器的工作原理,我们能够理解操作系统如何平衡效率、公平性和响应性,进而优化系统表现和用户体验。
14 3
|
17天前
|
网络协议 Linux 网络安全
Linux服务器DNS服务器配置实现bind的正向解释和反向解释
Linux服务器DNS服务器配置实现bind的正向解释和反向解释
17 0
|
19天前
|
算法 项目管理 开发者
【Conan 入门教程 】深入解析Conan中的依赖关系的定义方法(In-depth Analysis of Dependency Definition Methods in Conan)
【Conan 入门教程 】深入解析Conan中的依赖关系的定义方法(In-depth Analysis of Dependency Definition Methods in Conan)
34 0
|
20天前
|
编译器 Linux C语言
Valgrind兼容性解析:从核心依赖到错误诊断
Valgrind兼容性解析:从核心依赖到错误诊断
99 0
|
1月前
|
JSON 分布式计算 DataWorks
DataWorks常见问题之依赖的自动节点修改为统一调度节点失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
分布式计算 DataWorks 调度
DataWorks常见问题之设置好调度时间的任务运行后查看运行日志报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
38 0

热门文章

最新文章

推荐镜像

更多