为什么调度也需要“血缘分析”和“影响分析”?

news2024/11/15 4:05:45

在这里插入图片描述

摘要:数据治理中经常要遇表或者字段级“血缘分析”和“影响分析”,但是真正在数据ETL调度操作过程中使用影响和血缘分析频繁,看白鲸开源的WhaleStudio如何解决这个难题。

提到“血缘分析”和“影响分析”,普通开发者第一印象就是数据治理当中的表分析或者字段级分析,用于分析表某一个字段或者某一个指标出现问题的时候数据质量的溯源。这是一个非常普遍的功能,但是发现数据质量有问题的表之后,如何处理呢?一定会回到数据处理系统当中进行重跑或者修改跑处理相关的数据,而哪些作业涉及到这个表的数据处理呢?这其实就需要用到调度系统中的“血缘分析”和“影响分析”了。

所以,我们往往说,数据治理的“血缘分析”和“影响分析”是给业务人员和数据分析师使用的,而数据调度中的“血缘分析”和“影响分析”是给数据工程师使用的。

在白鲸开源的WhaleScheduler 2.4.6 版本当中提供的“血缘分析”和“影响分析”就充分考虑到这一点。同时,大家知道WhaleScheduler是白鲸开源主要维护的Apache DolphinScheduler的商业版本,它继承了开源DolphinScheduler强大的工作流和任务调度体系。其中有两种复杂的任务类型,依赖(Dependent)和子工作流(SubWorkflow):

  • 依赖任务(Dependent):在一个工作流(Workflow)当中,可以跨项目依赖另外的另外一个工作流的完成或者另外一个任务的完成。同时,这种依赖可以支持复杂依赖关系,例如,日依赖24个小时任务,月依赖31个日任务,几个任务之间存在与或非的各种关系等。
  • 子工作流任务(SubWorkflow):顾名思义就是一个任务可以直接引用另外的项目中的一个工作流成为一个子任务,并且可以把当前工作流当中的变量和情况,直接传递给另外一个工作流当中。

这两个任务类型对于调度系统的灵活性非常重要,也得到了开源社区的广泛使用。不过对于工作流的“血缘分析”和“影响分析”则是复杂性非常高。因为这意味着,通过这两个任务,一个工作流可以无限的扩展到其它工作流和任务之间的关系,而其它任务涉及到的工作流又可能依赖更多的其它任务或者有其他子工作流,所以,调度系统中整体的“血缘分析”和“影响分析”是比数据治理中的复杂的多的。
file
而调度的“血缘分析”和“影响分析”实用性和使用频繁度也是比数据治理中的频繁得多, 因为工作流和任务每天都要跑,如果出错,处理的时候都要看下这个任务的上下游,从而进行更好的运行态的处理。所以,白鲸开源在设计调度系统的“血缘分析”和“影响分析”时不仅仅提供一个静态的模板级别工作流设计里面的依赖和影响,更是可以针对工作流实例和任务实例来进行运行态中的“血缘分析”和“影响分析”,同时运行用户直接在分析的DAG图中,根据实例的状态直接邮件就行运行操作,从而真正帮助到数据工程师提高调试和运维效率。当然因为DolphinScheduler核心非常强大,支持无限子任务和依赖(目前在白鲸开源的商业客户中已有嵌套20层的客户),WhaleScheduler默认会展开上下5层Workflow的依赖和影响分析,用户可以自行上钻和下钻到自己需要的节点。
file
在企业真正使用过程当中,一般一个任务都处理一个表,而任务命名往往也和目标表命名类似,例如,表明DWD_Customer_Info,那么任务名称就是t_DWD_Customer_Info,所以,在表级别数据质量本身出现问题的时候,也可以利用任务的血缘分析来分析表技术质量,同时利用WhaleScheduler强大的运行态管理来任务重跑、工作流重跑、补数、依赖链重跑等多种方式快捷方便的完成数据问题的整理。

综上,调度也需要“血缘分析”和“影响分析”,而且使用频次和方便程度更直接关系到数据工程师的“幸福指数”,究竟无论是DolphinScheduler还是白鲸开源的WhaleScheduler,我们的目标都是让数据工程师们**“工具选的好,下班回家早;调度用的对,半夜安心睡”!**

本文由 白鲸开源科技 提供发布支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/506343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java EE 初阶】线程池简介及实现过程

目录 1.线程池是什么? 2.为什么要使用线程池? 3.如何使用线程池 1.JDK给我们提供了一些方法来创造线程池 4.设计模式之工厂模式 1.工厂模式用途 5.自定义一个线程池 1.可以提交任务到线程池,那么就会有一种数据结构来保存我们提交的任…

java lambda表达式详解

一、Lambda初识 我们知道,在Java中,接口是不能实例化的,但是接口对象可以指向它的实现类对象。如果接口连实现对象都没有呢?那还可以使用匿名类的方式,如下: public class JavaTest { public static void main(Strin…

jenkins,gitlab,实时构建推送

首先jdk,jenkins安装好,新版jenkins不支持jdk8 然后安装环境maven,git 环境配置 插件安装 gitlab插件 Build Authorization Token Root插件 插件环境整好之后新建个任务 源码管理,填入仓库https地址,添加git…

大势智慧软硬件技术答疑第一期

1.重建大师生成的实景三维模型,模型周边的道路植物被压平了,怎么保留植物道路原有形状? 答:这个是单体化生成的地理实体场景,会把地物压平,可以用模方将单体化的模型加入到osgb中。 2.直接导入空三的话这个…

采用docker部署时kafka共享zookeeper的网络配置

采用docker部署kafka、zookeeper,一般的做法是创建一个docker网络,然后kafka、zookeeper都使用这个网络。问题是,我部署到生产环境的时候,这种做法被禁止了。原因是添加了这个docker网络以后,服务器就无法访问了。该服…

Es读写调优、深度分页

写入 ES支持四种对文档的数据写操作 create:如果在PUT数据的时候当前数据已经存在,则数据会被覆盖,如果在PUT的时候加上操作类型create,此时如果数据已存在则会返回失败,因为已经强制指定了操作类型为create&#xf…

Spring核心 AOP

1.什么是AOP? AOP(Aspect Orient Programming),直译过来就是面向切面编程。AOP是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面…

【笔试强训选择题】Day9.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…

open3d Image和numpy互转,PointCloud和numpy互转

目录 1. open3d.geometry.Image转numpy 2. numpy 转 open3d.geometry.Image 3. numpy转PointCloud 4. PointCloud转numpy 1. open3d.geometry.Image转numpy np_x np.asarray(x) # (h,w,3) import numpy as np import matplotlib.pyplot as plt import matplotlib.image…

鸿蒙Hi3861学习十-Huawei LiteOS-M(消息队列)

一、简介 消息队列,是一种常用于任务间通信的数据结构,实现了接收来自任务或中断的不固定长度的消息,并根据不同的接口选择传递消息是否存放在自己空间。任务能够从队列里面读取消息,当队列中的消息是空时,挂起读取任务…

EC6108V9/V9C-Hi3798MV100-当贝纯净桌面-卡刷固件包

EC6108V9/V9C-Hi3798MV100-当贝纯净桌面-卡刷固件包-内有教程 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软…

C#学习笔记--实现一个可以重复权重并且能够自动排序的容器--MultiplySortedSet

目录 前言SortedSetC#自带类型自定义类SortedSet权值重复 需求自定义容器 -- MultiplySortedSet核心实现思路 MultiplySortedSet 使用C#自带类型自定义类 前言 最近需要在C#中实现一个功能 有一个容器,该容器能自动对里面的元素进行排序,类似C的优先队列…

fast中user_id如何显示user表中的名称_关联模型

问题:编辑框内的user_id显示的是nickname 列表里如何显示nickname或是username 解决方案如下: 需要更改3个地方,控制器,模型,js文件 1.控制器index list($where, $sort, $order, $offset, $limit) $this->build…

ES6D: 利用对称性进行高效的6D姿态检测

利用对称性进行高效的6D姿态检测 本文参考自CVPR2022的这篇文章:ES6D: A Computation Efficient and Symmetry-Aware 6D Pose Regression Framework Github链接为:https://github.com/GANWANSHUI/ES6D 介绍 在6D姿态检测中,一些具备对称性的…

米哈游的春招实习面经,问的很基础

米哈游的春招实习面经,主要考察了java操作系统mysql网络,这四个方面。 面试流程,共1小时,1min自我介绍,20min写题,剩下问题基础知识。 Java String,StringBuilder, StringBuffer区…

注意力模型

如果拿机器翻译来解释这个分心模型的Encoder-Decoder框架更好理解,比如输入的是英文句子:Tom chase Jerry,Encoder-Decoder框架逐步生成中文单词:“汤姆”,“追逐”,“杰瑞”。 在翻译“杰瑞”这个中文单词…

低代码/0代码(无代码)开发平台如何选型?这篇文章告诉你

随着数字化转型的加速,越来越多的企业开始寻求低代码或零代码开发平台来加速应用程序的开发和部署。选对合适的平台是至关重要的,因为这将决定企业能否在数字化转型中保持竞争优势。 市面上的低/零代码平台五花八门,在选型的时候需要考虑哪些…

搭建本地仓库源

一、如何搭建仓库源 之前讲了定制ISO的方法:使用chroot定制系统,但有时候我们想自定义的安装包不在上游的仓库源中,在我们本地应该怎么办呢?如果我们将deb包拷贝到iso目录再安装有点过于麻烦了,而且还可能需要手动处理…

Linux 常见命令与常见问题解决思路

Linux 常见命令 Linux 基础命令目录相关查看文件(日志)查看普通的文件查看压缩的文件 解压压缩Linux 系统调优topvmstatpidstatps vi/vim 编辑文件查找文件属性相关定时任务scp 复制文件和目录awk 分隔cutsort 与 uniq常见问题处理思路CPU 高系统平均负载…

数组存储与指针学习笔记(一)数据类型与存储、数据对齐、数据移植、typedef

数据类型与存储 一、数据类型与存储1.1 大端模式与小端模式1.2 有符号数和无符号数1.3 数据溢出1.4 数据类型转换 二、数据对齐2.1 为什么非要地址对齐2.2 结构体对齐2.3 联合体对齐 三、数据的可移植性四、Linux内核中的size_t类型五、typedef5.1 typedef的基本用法5.2 typede…