《数据资产管理核心技术与应用》读书笔记-第四章:数据质量的技术实现(二)

news/2024/9/19 18:41:31/ 标签: 大数据

《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,全书共分10章,第1章主要让读者认识数据资产,了解数据资产相关的基础概念,以及数据资产的发展情况。第2~8章主要介绍大数据时代数据资产管理所涉及的核心技术,内容包括元数据的采集与存储、数据血缘、数据质量、数据监控与告警、数据服务、数据权限与安全、数据资产管理架构等。第9~10章主要从实战的角度介绍数据资产管理技术的应用实践,包括如何对元数据进行管理以发挥出数据资产的更大潜力,以及如何对数据进行建模以挖掘出数据中更大的价值。

图书介绍:数据资产管理核心技术与应用

今天主要是给大家分享一下第四章的内容:

第四章的标题为数据质量的技术实现

内容思维导图如下:

本文是接着

《数据资产管理核心技术与应用》读书笔记-第四章:数据质量的技术实现(一)

继续往下介绍

1、质量数据采集的技术实现

当然除了借助Apache DolphinSchedur外,我们也可以自己实现定时任务运行,相关的技术架构图如下图所示。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著

  • 由于不管是数据湖还是数据仓库,都支持Spark 对其做数据读取和数据处理,所以对数据湖或者数据仓库的质量数据采集都可以通过在Spark集群中执行Spark任务的方式去获取数据。Spark 集群的部署支持Standalone、Mesos、YARN、Kubernetes 四种方式,可以参考Spark官方网址:Cluster Mode Overview - Spark 3.5.2 Documentation,如下图所示,可以根据实际使用的数据湖或者数据仓库的部署模式,来选择相应的Spark 集群的部署模式,比如您的数据仓库Hive 是通过Hadoop的方式部署的,那么Spark集群的部署方式就应该选择Hadoop YARN的部署模式更加合适。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著

  • 设计一个Spark集群上可以执行的jar包或者PySpark脚本,该Jar包或者PySpark脚本用于提交任务到Spark集群中进行运行 ,运行时,读取配置好的质量规则,任务执行完毕后,将采集到的质量结果数据入库,关于如何向Spark集群提交Jar包或者PySpark脚本任务,可以参考官网网址:Submitting Applications - Spark 3.5.2 Documentation,如下图所示。

  • Jar包或者PySpark脚本中可以执行Spark SQL语句,也可以执行Scala脚本或者Python脚本。
  • 如果Spark 集群是通过Kubernetes部署的,那么需要先将Jar包或者PySpark脚本 做成Docker 镜像,然后通过镜像的方式将Jar包或者PySpark脚本运行至Spark 集群中,如下图所示,关于Kubernetes相关的知识可以参考:Kubernetes 文档 | Kubernetes 。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著

  • Jar包或者Python 脚本,需要做成通用的,而不是执行每一个质量规则时都需要去创建一个jar包或者Python 脚本,当然也可以支持用户自定义Jar包或者Python 脚本进行扩展,但是一定要定义Jar包或者Python 脚本的抽象接口,如下图所示。

从图中可以看到,我们至少可以在抽象接口中先预定义好读取规则、解析规则以及执行规则等这几个方法,使用Java开发语言定义的抽象接口参考代码如下:《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著

public interface Example {
 
    void readRule(String rule);
 
    void analysisRule(String rule);
 
    void execRule(String data);
}

根据上面描述的数据质量规则的配置到数据质量规则的定时采集执行,可以大致设计如下图的表结构模型供参考。

1)、t_quality_rule_template为数据质量规则模板表,可以将一些通用的规则做成模板,供规则的配置者直接使用或者基于选择的规则模板再做少量的二次修改。

2)、t_quality_rule为数据质量规则配置表,表中存储了实际的数据质量采集规则以及该规则对应的数据表id以及定时采集的cron表达式,比如类似0 */30 * * * ?,就是每隔30分钟执行一次。

cron 表达式是一个字符串,该字符串通常是由 7 个域组成,每个域之间以空格格式,每个域代表一个特定的时间含义,如下表所示。

取值范围

0-59

0-59

0-23

1-31

1-12 或 JAN-DEC

1-7 或 SUN-SAT

1970-2099

3)、t_quality_rule_exec为数据质量规则执行表,表中存储了每次定时采集任务的执行记录。定时采集任务执行时,其状态的变化过程大致如下图所示,为了方便问题的定位,任务执行过程中的状态变化都需要更新到表t_quality_rule_exec中。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著

2、 如何处理采集到的质量数据

质量数据采集到的是原始的数据,由于数据质量规则众多,所以每一种规则采集到的原始数据可能都不一样,所以还需要对原始的数据做归一化处理,然后才能进行入库存储,如下图所示。

虽然每个质量规则采集到的原始数据可能都是不一样的,但是我们还是需要设计一个统一的原始数据消息格式以方便做数据的统一处理,参考如下:

[{
                   "execId": "",
                   "ruleId": "",
                   "returnType": "",
                   "returnData": [],
                   "startExecTime": "",
                   "endExecTime": ""
}]
3、质量数据的存储模型设计

从架构设计的角度来看,数据质量的存储需要注意如下几点:

  • 可扩展性: 支持对多种不同质量规则采集到的质量数据的存储,比如不能出现扩展了质量规则或者用户自定义的质量规则的结果数据无法存储,从而需要修改数据存储模型的情况。
  • 可跟踪性:需要记录质量数据的变更记录,方便将来做质量数据变化的跟踪和审查。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
  • 可维护性:支持手工运维,比如出现脏数据或者需要人工干预的情况时,可以让系统管理员进行相关的历史数据或者脏数据的清理等常规运维操作。

如下图所示基于上述的设计原则,设计了如下的数据质量存储模型供参考,下中在每张表中列出了数据质量存储模型的核心字段。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著

如果需要查询某张表的质量数据时,可以根据如下图所示的关联关系来获取数据。

质量数据其实和常用的监控数据很类似,也可以考虑用时序数据库来进行存储,因为质量数据都是按照时间来时序采集的,并且数据也是时序变化的,所以使用时序数据库来存储是非常适合的。常见的时序数据库对比介绍如下表所示,可以根据实际的场景来选择。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著

数据库类型

InfluxDB

Prometheus

OpenTSDB

描述

用于存储时间序列、事件和度量的开源时序数据库

开源时序数据库,一般多用于监控系统

基于HBase的可扩展的时间序列开源数据库

官方网址

https://www.influxdata.com/products/influxdb/

官方网址为https://prometheus.io/

官方网址为http://opentsdb.net/

文档介绍

https://docs.influxdata.com/influxdb

https://prometheus.io/docs/

http://opentsdb.net/docs/build/html/index.html

底层实现的开发语言

Go

Go

Java

支持的数据类型

数字和字符串

只支持数字

指标支持数字

,标签支持字符串

是否支持SQL语言

支持类SQL查询(和SQL语法类似)

不支持

不支持

API类型

Http API

RESTful Http/JSON API

Http API

未完待续......《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著

http://www.ppmy.cn/news/1516690.html

相关文章

pycharm redis 库

Redis(Remote Dictionary Server)是一个开源的 内存中数据结构存储系统,用作数据库、缓存和消息代理。它支持多种类型的数据结构,如字符串(strings)、哈希(hashes)、列表&#xff08…

LongWriter——从长文本语言模型中释放出10,000+字的生成能力

概述 当前的长上下文大型语言模型 (LLM) 可以处理多达 100,000 个词的输入,但它们很难生成超过 2,000 个词的输出。受控实验表明,该模型的有效生成长度本质上受到监督微调(SFT) 期间看到的示例的限制。换句话说,这种输出限制源于现有 SFT 数…

搭建自己的GPT

搭建自己的GPT 文章说明核心代码效果展示源码下载 文章说明 目前GPT的使用比较主流,现有开源大模型,可以拉取到本地进行部署,搭建属于自己的GPT对话工具;主要用于熟悉大模型的本地搭建;本文采用开源的Ollama进行服务提…

Docker Desktop镜像路径修改一直报错

一 点击Apply & Restart报错 [Window Title] Docker Desktop[Main Instruction] Error migrating WSL disk[Content] An error occurred while migrating the Docker Desktop WSL data disk to its new location:moving disk file: rename C:\Users\Lenovo\AppData\Local\D…

equals ,hashcode ,== ,三者之间的关系与区别

为什么要重写 equals 和hashcode 在Java中,重写equals方法和hashCode方法是为了确保对象在逻辑上相等时,它们在集合(如HashMap、HashSet)中的行为也是一致的。 以下是详细解释: 为什么要重写 equals 方法 默认行为&a…

博弈论(Nim游戏的扩展)

公平组合游戏ICG 若一个游戏满足: 1.由两名玩家交替行动; 2.在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关; 3.不能行动的玩家判负; 则称该游戏为一个公平组合游戏。 NIM博弈属于公平组合游戏,但城建的棋类游戏,比如围棋&…

Python算法工程师面试整理-概率与统计

1. 概率论 ● 基本概念: ○ 样本空间:所有可能结果的集合。 ○ 事件:样本空间的子集。 ○ 概率:事件发生的可能性,值在[0,1]之间。

【机器学习】实验设计之一次一因子方法(OFAT)、全因子设计方法(FFD)响应面方法(RSM)和插值方法以及如何选择控制因子的概念

引言 “一次一因子”(One-Factor-At-a-Time,OFAT)是一种经典的实验设计方法,用于分析模型中的每个输入因子(特征或变量)对响应变量(目标或结果)的影响 全因子设计(Full F…

前端面试题 webpack的工作流程

一、流程图 二、重要概念 1.entry入口: Webpack 从配置的入口点开始,分析应用程序的依赖关系 2.output出口: 定义了打包后的文件如何输出,包括文件名和输出路径。 3.loader加载器: Webpack 本身只能处理 JavaScr…

扁形电容器与圆柱形电容器的性能区别

在现代电子设备中,电容器的角色不可或缺。它们不仅用于存储电能,还担负着过滤、耦合和阻抗匹配等多重功能。市场上主要有扁形电容器和圆柱形电容器两种类型,各自具备独特的优势和应用场景。 扁形电容器和圆柱形电容器在性能上存在显著差异&am…

Adobe Illustrator矢量绘图软件win/mac软件下载安装

一、软件概述 1.1 Adobe Illustrator简介 Adobe Illustrator是一款由Adobe Systems开发的强大矢量绘图软件,专为设计师、艺术家及图形专家设计。它广泛应用于平面设计、插画、UI设计、图标设计、排版及数字媒体制作等领域。Illustrator以其独特的矢量图形处理能力…

如何构建一个Java SpringBoot法律援助平台:从设计到实现全解析

🎓 作者:计算机毕设小月哥 | 软件开发专家 🖥️ 简介:8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 🛠️ 专业服务 🛠️ 需求定制化开发源码提…

完成客户端/浏览器可以请求到控制层

文章目录 1.创建Controller和自定义注解1.目录2.MonsterController.java 怪物控制器3.Controller.java 自定义Controller注解4.RequestMapping.java 自定义RequestMapping注解 2.dom4j解析sunspringmvc.xml1.XMLParser.java2.sunspringmvc.xml3.XMLParserTest.java4.结果 3.开发…

编程学习之路上的挫折:如何在Bug迷宫中找到出口

在编程学习的道路上,每个程序员都会经历挫折。那些无法调试的错误、复杂的算法题、永远跑不通的代码,都像一道道难以逾越的高墙,阻挡着我们的前进。面对这些挫折,很多人感到迷茫、沮丧,甚至产生了放弃的念头。然而&…

Hiprint 打印插件在 Vue3 中的深度剖析

一、Hiprint 打印插件简介 Hiprint 打印插件在 Vue3 项目中具有重要的地位和显著的优势。 首先,它为 Vue3 项目提供了强大且便捷的打印功能。在现代的 Web 应用开发中,打印需求常常存在,而 Hiprint 很好地满足了这一需求,让开发…

RPC 运行时,第二次:发现新的漏洞

介绍 2022 年 4 月 12 日,微软发布了针对远程过程调用 (RPC) 运行时库 (rpcrt4.dll) 中三个漏洞的补丁。这些漏洞的 CVE 编号为:CVE-2022-26809、CVE-2022-24492和CVE-2022-24528。受影响的操作系统包括 Windows 7、8、10 和 11,以及 Windows Server 2008、2012、2019 和 2…

Stm32通过SPI读写W25QXX

Printf的重定向 因为printf是c中的库函数,要使用printf输出到串口,需要重定向,将printf定向到HAL_UART_Transmit。 新建一个retarget.c文件。 #include "stdio.h" #include "stm32f1xx_hal.h" #include "usart.h&…

黄金市场展望:CPI数据引发关注,技术面看涨

亚市现货黄金行情 8月14日周三,亚市盘中现货黄金价格小幅下跌,目前交投在2462美元/盎司附近。投资者将重点关注即将公布的美国消费者物价指数(CPI)数据,预计这将对黄金市场产生重大影响。 美联储政策预期与CPI数据 市场…

ubuntu 安装opencv(3.4.16)

查看版本,终端 opencv_version卸载 sudo apt-get remove libopencv-dev sudo apt-get autoremove sudo rm -rf /usr/local/include/opencv4 sudo rm -rf /usr/local/lib/libopencv* sudo rm -rf /usr/local/bin/opencv* sudo rm -rf /usr/local/share/opencv4 安…

探索贪心算法:解决优化问题的高效策略

贪心算法是一种在每一步选择中都采取当前最佳选择的算法,以期在整体上达到最优解。它广泛应用于各种优化问题,如最短路径、最小生成树、活动选择等。本文将介绍贪心算法的基本概念、特点、应用场景及其局限性。 贪心算法的基本概念 贪心算法的核心思想是…