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

注意:运维中心跨周期依赖(虚线)依赖也需要下线哦
相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
目录
相关文章
|
SQL 分布式计算 DataWorks
如何让DataWorks调度依赖一个非DataWorks的任务结点,如数据上传任务?
如何让DataWorks调度依赖一个非DataWorks的任务结点,如数据上传任务?创建一个表的空分区,然后通过DataWorks去检查这个分区。
367 7
|
存储 安全 Linux
Golang的GMP调度模型与源码解析
【11月更文挑战第11天】GMP 调度模型是 Go 语言运行时系统的核心部分,用于高效管理和调度大量协程(goroutine)。它通过少量的操作系统线程(M)和逻辑处理器(P)来调度大量的轻量级协程(G),从而实现高性能的并发处理。GMP 模型通过本地队列和全局队列来减少锁竞争,提高调度效率。在 Go 源码中,`runtime.h` 文件定义了关键数据结构,`schedule()` 和 `findrunnable()` 函数实现了核心调度逻辑。通过深入研究 GMP 模型,可以更好地理解 Go 语言的并发机制。
945 1
|
算法 Linux 定位技术
Linux内核中的进程调度算法解析####
【10月更文挑战第29天】 本文深入剖析了Linux操作系统的心脏——内核中至关重要的组成部分之一,即进程调度机制。不同于传统的摘要概述,我们将通过一段引人入胜的故事线来揭开进程调度算法的神秘面纱,展现其背后的精妙设计与复杂逻辑,让读者仿佛跟随一位虚拟的“进程侦探”,一步步探索Linux如何高效、公平地管理众多进程,确保系统资源的最优分配与利用。 ####
363 4
|
缓存 负载均衡 算法
Linux内核中的进程调度算法解析####
本文深入探讨了Linux操作系统核心组件之一——进程调度器,着重分析了其采用的CFS(完全公平调度器)算法。不同于传统摘要对研究背景、方法、结果和结论的概述,本文摘要将直接揭示CFS算法的核心优势及其在现代多核处理器环境下如何实现高效、公平的资源分配,同时简要提及该算法如何优化系统响应时间和吞吐量,为读者快速构建对Linux进程调度机制的认知框架。 ####
|
算法 调度
操作系统的心脏:深入解析进程调度算法
本文旨在深入探讨现代操作系统中的核心功能之一——进程调度。进程调度算法是操作系统用于分配CPU时间片给各个进程的机制,以确保系统资源的高效利用和公平分配。本文将详细介绍几种主要的进程调度算法,包括先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)以及优先级调度(PS)。我们将分析每种算法的基本原理、优缺点及其适用场景。同时,本文还将讨论多级反馈队列(MFQ)调度算法,并探讨这些算法在实际应用中的表现及未来发展趋势。通过深入解析这些内容,希望能够为读者提供对操作系统进程调度机制的全面理解。
|
SQL DataWorks 安全
DataWorks产品使用合集之如何实现分钟级调度
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
Java 测试技术 数据库
容器镜像解析问题之解析 Java 应用依赖时识别 jar 包如何解决
容器镜像解析问题之解析 Java 应用依赖时识别 jar 包如何解决
299 0
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
950 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1565 29
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
626 4

推荐镜像

更多
  • DNS