1 Overview

1.1 数据质量

在数据部门里,数据质量问题经常是被动发现,所以数据质量的问题是大多数公司数据部门都不得不面对的问题。数据质量校验的目标是监控数据管道中,生产者、处理阶段以及消费者的数据的正确性、一致性和及时性的一项系统工程。数据质量需要对数据进行校验,当产生严重的数据污染等事件的时候需要告警和阻塞数据处理链路,最大限度的减少由于上下游数据质量而产生的问题。

1.2 一些术语

  1. DQ: Data Quality
  2. 强规则: 符合一定条件会阻塞任务的规则
  3. 弱规则: 即使符合条件也不会阻塞任务
  4. 阈值: 监测的数据质量范围
  5. 表的平均波动率:一段时间内每日环比的均值
  6. 表的平均记录数:记录数的每日均值
  7. 表的平均报警数:报警数的每日均值
  8. 最近30天的最大波动率:max(|(最近30天记录数最大值-最近30天记录数均值)/最近30天记录数均值|,|(最近30天记录数最小值-最近30天记录数均值)/最近30天记录数均值|)
  9. 最近30天的最小波动率: min(|(最近30天记录数最大值-最近30天记录数均值)/最近30天记录数均值|,|(最近30天记录数最小值-最近30天记录数均值)/最近30天记录数均值|)

......(待补充)

2 监控手段

监控手段主要包括两个方面,一是监,数据质量校验,二是控,告警和处理。

2.1 数据质量校验

根据数据质量校验的对象,可以分为两种形式:

  1. 离线检查 - 可以指离线的对一些数据集 DataSet 进行检查
  2. 实时检查 - 数据处理流的检查

数据质量监控规则包括可以有多种形式:

  1. 主键监控
  2. 表数据量及波动监控
  3. 重要字段的非空监控
  4. 重要枚举字段的离散值监控、指标值波动监控
  5. 业务规则监控

根据校验范围,还可以分成两种形式:

  1. 抽样检查 - 效率高,资源消耗不大
  2. 全量检查 - 效率低,全覆盖,资源消耗大

2.2 告警和处理

告警和处理分为两个阶段,一是告警,当数据质量出现问题的时候,需要及时通知责任人,二是处理,出现上游数据污染,根据规则级别,需要及时阻塞下游任务,并处理上游任务。

3 实现方案的初想

3.1 离线检测

关于离线检查,最典型的场景应该有两个,一是0行检测,二是阈值检测。

0行检测可以理解成一些表不应该存在0行的情况,如果有,需要及时告警和排查原因,甚至是0行数据会影响下游任务,需要考虑阻断下游任务的继续执行,一方面减少下游任务异常的多余告警,二来节省下游任务执行的资源。

对于 Hive 来说,Hive Metastore 的查询,利用 HiveMetaStoreClient,定时获取各表的行数,可以作为离线监测的基础,又或者是利用 Hive Hook 来收集行数等信息。检查0行是相对简单的,只要一条 sql 就可以。这个可以作为一个定时的离线任务,定时执行,甚至是作为整个任务流 DAG 中的中间表任务生产后自动触发检查。

select a.TBL_ID, a.TBL_NAME, b.PARAM_KEY, b.PARAM_VALUE from TBLS as a join TABLE_PARAMS as b where a.TBL_ID = b.TBL_ID and TBL_NAME="call_center" and PARAM_KEY="numRows";+--------+-------------+-----------+-------------+
| TBL_ID | TBL_NAME    | PARAM_KEY | PARAM_VALUE |
+--------+-------------+-----------+-------------+
|    134 | call_center | numRows   | 60          |
+--------+-------------+-----------+-------------+

阈值检查的实现也非常容易,如果有离线/实时计算的平台,可以提供一些类 sql 的语法,同样是作为离线的定时任务来执行检查。当然阈值检查必须考虑检查范围的问题,抽样肯定要比全量更效率更高,但是全量肯定比抽样更稳妥,需要结合资源和业务来综合衡量。

-- 设置检查范围
set checkMode = SAMPLING;
-- 阈值检查
select a from A where a > 100;

3.2 实时检查

数据采集结果数据接入之后,数据存在于 Kafka 中,如何实现动态流式的数据质量检查呢?

需要明确一些具体的监测指标,比如 Kafka 消息中包含了不符合业务方定义的消息 schema,具体来看就是 key,需要告警并且在处理的时候过滤掉对应的 key;又或者是某些 key 的 value 小于预期的阈值,该条消息也需要屏蔽,以防止数据污染(屏蔽来不要紧,因为消息是有备份的,屏蔽只会影响下游程序)。

Flink 消费 Kafka 数据的时候,需要 FlinkKafkaConsumerxx,其中需要一个参数是针对接收到的每一条消息,key/value解序列化器,用于将字节数组形式的Kafka消息解序列化回对象,那么通过将规则实现在这里,并且通过 filter 语义来过滤,是可以实现实时的数据质量检测的,一旦遇到不符合消息 schema 的 key,又或者是不符合阈值条件的 value,那么就需要对这条消息进行处理。

可能存在的问题:

  1. 增加来每条消息处理的成本,处理的速度和吞吐量可能会是问题
  2. Flink 版本升级的时候需要重新定制 Consumer

4 一些想法

  1. 有些规则,像字段阈值,表行数这些,其实也算一种元数据,是否可以纳入到元数据管理里面呢
  2. 数据质量平台构建起来繁琐且对接上下游业务系统较多,为了快速落地,想先做离线检查,从最简单的0行检测和阈值检测做起
  3. 在数据同步过程中不进行清洗,避免影响同步效率,在数据进入 ODS 层之后进行清洗
  4. 为了可以进行动态观察,长期观察,数据质量平台必须有检测目标和检测结果的可视化
  5. 个人觉得 sql 的表达能力应该可以覆盖数据质量检测的大部分场景

5 参考系统

  1. DQC(阿里云)
  2. DataMan(美团)
  3. Apache Griffin

6 Reference

  1. http://www.6aiq.com/article/1545230321843?p=1&m=0
  2. https://www.ctolib.com/topics-121591.html
  3. https://blog.csdn.net/zhaodedong/article/details/73385667

pb利用datawindow查询符合条件的数据并且过滤掉其他数据_数据质量监测相关推荐

  1. pb利用datawindow查询符合条件的数据并且过滤掉其他数据_牟宇航:百度OLAP数据库——Palo...

    专家视野 | 牟宇航:百度OLAP数据库--Palo https://mp.weixin.qq.com/s/q8_kdDPdCPwIjI2BCETPZw 3月28日,在工业和信息化部的指导下,为期两天 ...

  2. pb利用datawindow查询符合条件的数据并且过滤掉其他数据_eBay将CAL上PB级的日志存储迁移到Ceph的实践...

    供稿 | Unified Monitoring Platform 翻译&编辑 | 顾欣怡 本文3663字,预计阅读时间11分钟 本文转载自"eBay技术荟",更多干货请关注 ...

  3. access 查询符合条件的第一条记录

    有个定时上传数据库中某些记录的需求. 定时任务中,如果查出所有符合条件的数据并上传,如果数据过多,可能不易处理,那么就限定每次只查询符合条件的一条或几条记录.经测试,access中SQL写法举例如下: ...

  4. powerbuilder查询符合条件的数据并且过滤掉其他数据_SQL语句之逻辑查询处理阶段...

    基础知识普及 对于教条式的定义请自己去查,此处不会涉及到文邹邹的知识,但还是强调一下基础的重要性,即使你理解了所有的概念,但当组合起来用时也会一头雾水. 逻辑查询处理阶段 在以上的10个处理步骤中,每 ...

  5. 数据分区与放置策略解析_数据策略好数据与坏数据

    数据分区与放置策略解析 In 1990 the Virginia based bank "Signet Bank" decided to trust two smart peopl ...

  6. 外网数据同步到内网方案_数据同步之解决方案

    关于数据同步的需求,想必是开发人员都可能遇到!下面就聊聊关于数据同步的解决方案: 一.使用中间表:数据生产者将数据放在一个中间库,数据消费方定时的去这个中间库取数据,用来消费这些数据, 但是这中方案并 ...

  7. 大数据对社交媒体的影响_数据如何影响媒体,广告和娱乐职业

    大数据对社交媒体的影响 In advance of our upcoming event - Data Science Salon: Applying AI and ML to Media, Adve ...

  8. 数据透视表 数据源引用无效_数据透视表源数据文章

    数据透视表 数据源引用无效 The key to success with Excel pivot tables is having good source data. I've written ma ...

  9. 数据科学导论python语言实现_数据科学导论:Python语言实现(原书第2版)

    数据科学导论:Python语言实现(原书第2版) 作者:(意)阿尔贝托·博斯凯蒂(Alberto Boschetti);(意)卢卡·马萨罗(Luca Massaron) 著 出版日期:2018年01月 ...

最新文章

  1. recyclerview item动画_RecyclerView 的 Item 酷炫动画,效果加案例讲解!
  2. 『树上匹配 树形dp』
  3. jquery对输入框内容的数字校验
  4. 深度学习核心技术精讲100篇(七十五)-集成学习
  5. python isinstance函数
  6. centos7下安装mysql5.6_Linux-CentOS7下安装mysql5.6常见问题解决!
  7. xpath in biztalk
  8. keynote代码高亮【转】
  9. FTP介绍及FlashXP的使用教程
  10. 复合型网络拓扑结构图_计算机网络拓扑结构图的种类及图示
  11. php取名字第一个字,php 获取姓名拼音首字母
  12. 新手零基础如何系统的自学网络安全,2022最新最全学习路线
  13. 从上到下,一文带你看全所有GNN分类
  14. 遥感数据处理计算机硬件要求
  15. 激励视频广告 Android,微信小程序中插入激励视频广告并获取收益(实例代码)
  16. linux修改只读文件指令,linux修改文件权限
  17. 虚拟机增加一块新硬盘
  18. 众言科技SVP郭晓波做客东南大学:选对池塘钓大鱼 | 校企互通
  19. 深度学习之前馈神经网络(前向传播和误差反向传播)
  20. 6. 设计模式之迭代思维:如何高效编程?

热门文章

  1. 小程序 background-image背景图片设置的注意点
  2. sqlserver启用登陆审计
  3. Oracle数据导入要多久,oracle数据库备份导入要注意的几个问题
  4. oracle rac添加用户组,oracle 11g rac 与 oracle 10 rac所需要建立的组和用户
  5. .java文件_【转】java文件操作大全
  6. 百度蜘蛛网站分两个服务器,SEOer需要将百度蜘蛛抓取时间降低到1秒以下
  7. android xml正方形,使用Android Constraintlayout创建一排均匀分布的正方形
  8. php查询数据方法,php查询数据库的方法
  9. (JAVA)Calender类
  10. 中职 计算机老师 教cad,教师博客应用于职校计算机CAD教学探究.doc