自由的羽毛 发表于 2024-8-27 14:53:20

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

《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,全书共分10章,第1章主要让读者认识数据资产,相识数据资产相关的基础概念,以及数据资产的发展情况。第2~8章主要先容大数据时代数据资产管理所涉及的核心技术,内容包括元数据的采集与存储、数据血缘、数据质量、数据监控与告警、数据服务、数据权限与安全、数据资产管理架构等。第9~10章主要从实战的角度先容数据资产管理技术的应用实践,包括如何对元数据进行管理以发挥出数据资产的更大潜力,以及如何对数据进行建模以挖掘出数据中更大的价值。
图书先容:数据资产管理核心技术与应用
今天主要是给各人分享一下第四章的内容:
第四章的标题为数据质量的技术实现
内容思维导图如下:
https://img2024.cnblogs.com/blog/1200756/202408/1200756-20240814165631492-1960274565.png
本文是接着
《数据资产管理核心技术与应用》读书条记-第四章:数据质量的技术实现(一)

继续往下先容
1、质量数据采集的技术实现
当然除了借助Apache DolphinSchedur外,我们也可以本身实现定时任务运行,相关的技术架构图如下图所示。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
https://img2024.cnblogs.com/blog/1200756/202408/1200756-20240827143655161-1043914592.png

[*]由于不管是数据湖还是数据仓库,都支持Spark 对其做数据读取和数据处置惩罚,所以对数据湖或者数据仓库的质量数据采集都可以通过在Spark集群中执行Spark任务的方式去获取数据。Spark 集群的摆设支持Standalone、Mesos、YARN、Kubernetes 四种方式,可以参考Spark官方网址:https://spark.apache.org/docs/latest/cluster-overview.html#cluster-manager-types,如下图所示,可以根据实际利用的数据湖或者数据仓库的摆设模式,来选择相应的Spark 集群的摆设模式,好比您的数据仓库Hive 是通过Hadoop的方式摆设的,那么Spark集群的摆设方式就应该选择Hadoop YARN的摆设模式更加符合。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
https://img2024.cnblogs.com/blog/1200756/202408/1200756-20240827143655266-814091329.png

[*]设计一个Spark集群上可以执行的jar包或者PySpark脚本,该Jar包或者PySpark脚本用于提交任务到Spark集群中进行运行 ,运行时,读取设置好的质量规则,任务执行完毕后,将采集到的质量结果数据入库,关于如何向Spark集群提交Jar包或者PySpark脚本任务,可以参考官网网址:https://spark.apache.org/docs/latest/submitting-applications.html,如下图所示。
https://img2024.cnblogs.com/blog/1200756/202408/1200756-20240827143656012-21643767.png

[*]Jar包或者PySpark脚本中可以执行Spark SQL语句,也可以执行Scala脚本或者Python脚本。
[*]如果Spark 集群是通过Kubernetes摆设的,那么需要先将Jar包或者PySpark脚本 做成Docker 镜像,然后通过镜像的方式将Jar包或者PySpark脚本运行至Spark 集群中,如下图所示,关于Kubernetes相关的知识可以参考:https://kubernetes.io/zh-cn/docs/home/ 。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
https://img2024.cnblogs.com/blog/1200756/202408/1200756-20240827143654898-706974958.png

[*]Jar包或者Python 脚本,需要做成通用的,而不是执行每一个质量规则时都需要去创建一个jar包或者Python 脚本,当然也可以支持用户自定义Jar包或者Python 脚本进行扩展,但是一定要定义Jar包或者Python 脚本的抽象接口,如下图所示。
https://img2024.cnblogs.com/blog/1200756/202408/1200756-20240827143654892-940146054.png
从图中可以看到,我们至少可以在抽象接口中先预定义好读取规则、剖析规则以及执行规则等这几个方法,利用Java开发语言定义的抽象接口参考代码如下:《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
public interface Example {     void readRule(String rule);     void analysisRule(String rule);     void execRule(String data);}<br><br>根据上面描述的数据质量规则的设置到数据质量规则的定时采集执行,可以大抵设计如下图的表结构模型供参考。
https://img2024.cnblogs.com/blog/1200756/202408/1200756-20240827143655180-1672695719.png
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中。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
https://img2024.cnblogs.com/blog/1200756/202408/1200756-20240827143655160-223747829.png
2、 如何处置惩罚采集到的质量数据
质量数据采集到的是原始的数据,由于数据质量规则众多,所以每一种规则采集到的原始数据可能都不一样,所以还需要对原始的数据做归一化处置惩罚,然后才气进行入库存储,如下图所示。
https://img2024.cnblogs.com/blog/1200756/202408/1200756-20240827143654715-540626297.png
虽然每个质量规则采集到的原始数据可能都是不一样的,但是我们还是需要设计一个统一的原始数据消息格式以方便做数据的统一处置惩罚,参考如下:
[{                   "execId": "",                   "ruleId": "",                   "returnType": "",                   "returnData": [],                   "startExecTime": "",                   "endExecTime": ""}]<br><strong>3、质量数据的存储模型设计<br></strong>从架构设计的角度来看,数据质量的存储需要注意如下几点:

[*]可扩展性: 支持对多种不同质量规则采集到的质量数据的存储,好比不能出现扩展了质量规则或者用户自定义的质量规则的结果数据无法存储,从而需要修改数据存储模型的情况。
[*]可跟踪性:需要记载质量数据的变更记载,方便将来做质量数据变化的跟踪和检察。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
[*]可维护性:支持手工运维,好比出现脏数据或者需要人工干预的情况时,可以让系统管理员进行相关的汗青数据或者脏数据的清理等常规运维操纵。
如下图所示基于上述的设计原则,设计了如下的数据质量存储模型供参考,下中在每张表中列出了数据质量存储模型的核心字段。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
https://img2024.cnblogs.com/blog/1200756/202408/1200756-20240827143655269-1887803960.png
如果需要查询某张表的质量数据时,可以根据如下图所示的关联关系来获取数据。
https://img2024.cnblogs.com/blog/1200756/202408/1200756-20240827143654886-393499344.png
质量数据其实和常用的监控数据很雷同,也可以考虑用时序数据库来进行存储,由于质量数据都是按照时间来时序采集的,并且数据也是时序变化的,所以利用时序数据库来存储是非常适合的。常见的时序数据库对比先容如下表所示,可以根据实际的场景来选择。《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著
数据库范例
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
<strong>未完待续......《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,作者为张永清等著</strong>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 《数据资产管理核心技术与应用》读书条记-第四章:数据质量的技术实现(二