【数据仓库】6.数据质量监控
0x00 前言
往往那些不起眼的功能,最能毁掉你的工作成果。
本篇分享一些和数据质量监控相关的内容。数据质量监控是一个在快速发展的业务中最容易被牺牲和忽略的功能,但是它确实至关重要的。
文章结构
数据质量监控的意义和价值就不再谈了,本文主要讨论下面三个主题:
数据质量监控要做哪些监控内容
该怎么做
数据校验
文中会涉及到数据仓库其它的一些知识点,请参考之前的文章。
0x01 什么值得你监控
我把数据质量分成三部分来理解:
监控
告警
多数据源
重点在监控,这点会展开来讲,多数据源这一块是因为在大数据场景下,我们有太多的开源组件来选择,很多组件的数据都需要监控,而且每个都不一样,如果统一地来监控是个重要的话题。
如下图,我先列一个大致的思维导图,然后详细讲每一部分。
一、 监控
监控这一块比较大。整体来讲,我会把它分为这几块:日常监控、数据对账、性能监控。下面分开来讲。
1. 日常监控
日常监控中最重要的一个就是数据落地检查,这应该是所有监控的一个基础,不然没数据你玩个毛啊。
下面是我认为一些比较常用的监控内容:
数据落地监控
数据掉0监控:实际扩展一下就是数据量阈值监控,少于某个量就告警
重复数据监控:很多表一定要监控重复数据的,这点至关重要。
关键指标监控
数据同比环比监控
这是一些常用的监控,在后面会提到,我们可以做一个规则引擎,上面提到的都坐到规则里面,哪个表需要了就陪一下就行了。
2. 数据对账
这点主要会体现到实时数据上,特别是Kafka数据落地,必须要有一个监控机制来知道我们的数据落地情况。
当然离线数据同样需要数据对账,对账方法有很多,比如可以和业务库来对比。
3. 性能监控
我把这点理解为数据可用性监控,我认为这是一个很重要的点。 如果你做的数据别人用起来十分不爽,或者慢得要死根本没法用,那做了和没做有什么区别?
感觉在性能监控上就是有几个点要注意:
查询性能,比如es的某个索引,在不同时间段的查询响应速度,同理presto、hive、kylin这些的查询都需要注意一下,这点可以通过任务监控来观察。
数据读写影响,机器故障影响,这点平常不太关注,不过像es这种,在写入数据的时候其实会影响读数据的,需要监控一下,并做相应调整。
二、告警
告警就不用说了,微信、短信和电话都很有必要。
定期的邮件汇总告警也很有必要。
然后有很多的告警可以考虑一个告警报表系统来展示,特别像是数据量趋势这种监控内容,可视化的对比比较有效。
三、 多数据源
在目前的大数据场景下,各种开源组件引入的十分多,而且会有新的组件不停地引入,因此要考虑到对不同组件的数据监控。
目前笔者接触比较多的会有Hive(presto、spark sql)、Mysql、ES、Redis、Kylin(主要是构建的cube)这些常用的,但是不能排除图数据库(neo4j、orientdb)和druid这些组件引入的可能性。
0x02 怎样监控
数据监控相对来讲是属于后台系统,不能算是对外的业务系统,一般重要性可能会被挑战,虽说如此,它还是值得一做的。 不过可能要换一些思路来做,如何快速地实现、并抓住核心的功能点是值得深思的一件事。
这里不会有实现,只会有一些设计思路,欢迎来讨论。
如图是一个整体的构思,我先分析几个个人认识比较重要的点。后面会详细地来分析。
规则引擎:来定义各种告警规则,可能是一条sql模板,也可能是一些具体的算法。
执行引擎:要来执行各种规则,同时要考虑各种数据源的差异。
元数据系统:数据质量监控本来也算是元数据系统的一部分,我们这分开来讲,但是无论如何,在配置表的告警信息时,还是要和元数据系统结合的。
下面会分开来分析一下这几个组件。
一、 规则引擎
举几个典型例子:数据延迟到达、数据同比环比、数据趋势、一些定制化算法。
这块的设计可以很灵活,也可以临时开发一个简单的。这里提几个点。
1. Sql模板
在大多数存储引擎中,通过Sql使用的数据(比如Hive、Mysql)会是比较重要的一种数据,这种数据我们可以考虑用Sql模板。
我们会有一张表或者一些配置文件来定义我们的规则。简单来讲,比如说数据同比环比,我们可以写一个presto的sql模板,来和历史数据进行对比,这种sql很简单,自己写好模板就行。
这种模板最简单,也最快,我相信能解决大部分问题。
2. 元数据
很多数据库都是有元数据管理的,比如Hive,它的表的行数都是在元数据库中有存放的,我们可以直接通过Hive的元数据来抓取表的每天的数据量的。
注意:这点十分重要,它能节省我们大部分的工作,而且比较稳定,但是能满足的功能比较少。需要结合其它来使用。
3. 自定义模板
有很多算法不是简单的sql就能搞定的,而且很多存储系统也不是所有都支持sql。比如es这种。因此就需要一些定制化的算法来实现。
这方面的主要工作量应该是在执行引擎上,但是在规则引擎应该有设计到。
二、执行引擎
这块应该是比较重要的。 实现起来可以很简单,也可以很复杂。下面大概聊一下。
1. Sql执行
很多规则都可以通过sql来执行的,这点在规则引擎里面提到了。
其实我很推荐,刚开始的比较粗糙的监控都可以这样来做。 我们提前配置好大部分的sql模板,然后需要监控哪张表了就在这张表配置一下就行。
具体的执行引擎的话可以考虑presto或者spark sql,特别大的任务可以考虑hive。
优点:
简单,方便实现
能满足大部分的需求
缺点:
灵活度不够,比如es,对sql支持太差
速度慢:很多sql执行起来会比较慢,特别是使用hive引擎的时候,会巨慢。
不稳定:一些监控会不太稳定,比如重复数据监控,对一些大的表来讲,用presto这种,是很难出结果的,经常会挂掉,但是换成hive的话又会很慢。
那么如何解决?
嗯,解决的话,我只有下面几个思路:
合理的任务调度,一般集群都是能容纳很多任务的,合适地调度监控任务比较重要。
合理地替换执行引擎,这个下一节会提供一种方案。
合理的任务依赖,比如说是重复数据监控,这点必然会依赖于数据是否到达,如果数据没达到就没必要执行重复数据监控的程序。
2. 直接获取数据量
前面提到了Sql执行的一个执行效率问题,我们这节提供一个优化的方法。因为Hive目前来讲是十分重要的一种引擎了,所以单说Hive。
Hive是有元数据管理的,它的元数据库中是记录Hive的所有表的记录数的,这些记录数可以直接用作数据量相关的监控,比如数据掉零、数据量环比同比、数据量趋势等。
3. 算法执行引擎
很多算法可以通过自定义地方式实现,这一点实现起来就会比较复杂一些。
因为定制化比较强,在设计这一块的话需要一个比较灵活的架构,这里不再展开来讲,因为在常见的数据领域里面,前两点已经能满足很多需求了。
4. 多数据源
多数据源这一块,在规则引擎里面需要加一些区分,因为这毕竟和元数据系统关联,区分还是比较简单。
在执行的时候,可能要稍微分开来实现。不过相对来讲不是很复杂。
0x03 数据校验
数据校验之前是没在意的,现在把这一块补进来。比较偏个人理解,暂时还没形成完整的知识体系。主要就是说如何判断自己的数据是正常的、可以被信任的,这一块在数据质量中应该是十分重要的。
方法的话可以有交叉验证、异常波动监控等,暂时先不分享了,后面自己理清楚了再说。在这里就当提个醒。
0xFF 总结
本篇主要分享了一些和数据质量监控相关的内容,有一些泛泛而谈的感觉,但是理清思路后很多实现起来也是很简单的, 想做个简单能用的出来,用python半天就能搞定。
这里主要是思路,具体的实现就不再写了。毕竟根据业务需求,实现的程度也会不一样。
转载
- 作者:木东居士 |简书 | CSDN
【数据仓库】6.数据质量监控相关推荐
- 数据仓库之数据质量监控
文章目录 ==数据质量的理解== ==数据质量维度== ==问题反馈流程== ==数据质量治理的三个阶段== ==数据质量产生的根本原因== ==数据质量治理的对象== ==数据质量战略== ==数据 ...
- 【数据仓库学习】数据质量监控
0x00 前言 往往那些不起眼的功能,最能毁掉你的工作成果. 本篇分享一些和数据质量监控相关的内容.数据质量监控是一个在快速发展的业务中最容易被牺牲和忽略的功能,但是它确实至关重要的. 文章结构 数据 ...
- 爱奇艺数据质量监控的探索和实践
01 问题和目标:为什么要进行数据质量监控? 数据质量监控其实跟当前疫情的防控工作有些类似,核酸检测能尽早去发现病毒,溯源则会更了解病毒会在哪些场景,或者对哪些人有比较大的影响,方便进行跟踪,这和数据 ...
- 数据质量监控Griffin——使用
一.环境 生产环境 数据质量监控griffin: 地址:http://XXXXXXXXX:4200/#/health 账号:admin 密码:123456 二.Griffin是干什么的? 官方介绍 大 ...
- 数据分析 - 基础原理 之 第三章:数据质量管理 - 第五节:数据质量监控
前言 数据质量监控 是容易被忽略的一个重要环节,我刚开始搞数据库时压根也没想到会有这档事,直到频繁出现几次数据"翻车"事故后,才感受到它的重要性与必要性:如果连数据源的状况都不能掌 ...
- 开源大数据数据质量监控调研
开源工具选择不多,目前了解到的就以下3种: Qualitis griffin DolphinScheduler(最近有人上传了分支,支持数据质量监控功能) 1 Qualitis 腾讯微众银行开源,主要 ...
- 【译】Databricks使用Spark Streaming和Delta Lake对流式数据进行数据质量监控介绍
编译:刘佳毅,花名佳易,阿里巴巴计算平台事业部EMR团队开发工程师,目前从事大数据安全相关方面工作. 摘要: 本文主要对Databricks如何使用Spark Streaming和Delta Lake ...
- Apache Griffin+Flink+Kafka实现流式数据质量监控实战
点击上方蓝色字体,选择"设为星标" 回复"面试"获取更多惊喜 八股文教给我,你们专心刷题和面试 Hi,我是王知无,一个大数据领域的原创作者. 放心关注我,获取更 ...
- 数据仓库中数据质量评价标准
1.数据质量的定义 数据质量是指在特点情况下,数据的特性满足明确的和隐含的要求的程度. 2.数据评价标准框架 说明: 规范性:数据符合数据标准.数据模型.业务规则.元数据或权威参考数据的程度. 完整性 ...
- 得物交易域数据仓库数据质量保障体系建设 |大数据测试
一.背景介绍 目前得物数仓测试,划分成交易.增长.社区等多个模块,不同的数仓测试域,都会有一名测试人员负责跟进,根据每个版本每个域资源实际投入情况,组内会适当的调整资源,以满足日常迭代需要:单交易域这 ...
最新文章
- LeetCode 221. Maximal Square----动态规划--谷歌面试算法题--Python解法
- Juniper批量新增用户命令工具
- 每日一皮:程序员新手尝试新框架的时候
- # PHP - 使用PHPMailer发邮件
- 图片image和byte处理,fileupload上传图片
- python缩进符错误_python – 如何修复Pylint“错误的缩进”和PEP8 E121?
- 2019蓝桥杯省赛---java---B---2(不同子串)
- 数据传输服务 DTS > 数据迁移 > 同一阿里云账号实例间迁移 > RDS实例间的数据迁移
- VS程序发布之NetFramework版本选择
- win10远程桌面Android软件,Android端Win10远程桌面更新:支持Windows虚拟桌面
- 反距离加权插值IDW计算详细步骤
- FPGA实战篇——【2】按键控制LED灯闪烁
- geomtry string 转换_SQL Server数据转换【包括Geometry类型】的技巧总结
- could not resolve dependency: npm err! peer react@“^16.8.0 || ^17.0.0“ from @material-ui/core@4.12.4
- 二十三种设计模式 python实现
- Python丨Django实现微电影网站
- “利空”砸盘?中本聪:这个锅我不背
- 为何某些文章的阅读量这么高?
- 1.2 原子物理学——电子的普线图、能级图,能量吸收和共振
- WPS表格:使用技巧
热门文章
- linux segmentation fault 信号,linux中 Segmentation fault问题
- CS,四,组网及因特网
- 什么是PSD(功率谱密度)
- 数学用计算机开方,开方(数学术语)_百度百科
- 计算机科学与技术培养计划,计算机科学与技术专业培养方案(2017版).PDF
- 历年软考网络规划师考点总结
- Win10将用户名修改为英文
- oracle.exe占用cpu太高,360tray.exe占用CPU过高,怎么办
- codeforces C. Team
- 超强可视化图表工具:Smartbi!!