网站开发php是什么意思,网站页面制作视频,湖南华图企业展厅设计公司,网站建设需要达到什么样的效果1 Overview1.1 数据质量在数据部门里#xff0c;数据质量问题经常是被动发现#xff0c;所以数据质量的问题是大多数公司数据部门都不得不面对的问题。数据质量校验的目标是监控数据管道中#xff0c;生产者、处理阶段以及消费者的数据的正确性、一致性和及时性的一项系统工…1 Overview1.1 数据质量在数据部门里数据质量问题经常是被动发现所以数据质量的问题是大多数公司数据部门都不得不面对的问题。数据质量校验的目标是监控数据管道中生产者、处理阶段以及消费者的数据的正确性、一致性和及时性的一项系统工程。数据质量需要对数据进行校验当产生严重的数据污染等事件的时候需要告警和阻塞数据处理链路最大限度的减少由于上下游数据质量而产生的问题。1.2 一些术语DQ: Data Quality强规则: 符合一定条件会阻塞任务的规则弱规则: 即使符合条件也不会阻塞任务阈值: 监测的数据质量范围表的平均波动率一段时间内每日环比的均值表的平均记录数记录数的每日均值表的平均报警数报警数的每日均值最近30天的最大波动率max(|(最近30天记录数最大值-最近30天记录数均值)/最近30天记录数均值||(最近30天记录数最小值-最近30天记录数均值)/最近30天记录数均值|)最近30天的最小波动率: min(|(最近30天记录数最大值-最近30天记录数均值)/最近30天记录数均值||(最近30天记录数最小值-最近30天记录数均值)/最近30天记录数均值|)......待补充2 监控手段监控手段主要包括两个方面一是监数据质量校验二是控告警和处理。2.1 数据质量校验根据数据质量校验的对象可以分为两种形式离线检查 - 可以指离线的对一些数据集 DataSet 进行检查实时检查 - 数据处理流的检查数据质量监控规则包括可以有多种形式 主键监控表数据量及波动监控重要字段的非空监控重要枚举字段的离散值监控、指标值波动监控业务规则监控根据校验范围还可以分成两种形式抽样检查 - 效率高资源消耗不大全量检查 - 效率低全覆盖资源消耗大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_NAMEcall_center and PARAM_KEYnumRows;---------------------------------------------
| 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那么就需要对这条消息进行处理。可能存在的问题增加来每条消息处理的成本处理的速度和吞吐量可能会是问题Flink 版本升级的时候需要重新定制 Consumer4 一些想法有些规则像字段阈值表行数这些其实也算一种元数据是否可以纳入到元数据管理里面呢数据质量平台构建起来繁琐且对接上下游业务系统较多为了快速落地想先做离线检查从最简单的0行检测和阈值检测做起在数据同步过程中不进行清洗避免影响同步效率在数据进入 ODS 层之后进行清洗为了可以进行动态观察长期观察数据质量平台必须有检测目标和检测结果的可视化个人觉得 sql 的表达能力应该可以覆盖数据质量检测的大部分场景5 参考系统DQC阿里云DataMan美团Apache Griffin6 Referencehttp://www.6aiq.com/article/1545230321843?p1m0https://www.ctolib.com/topics-121591.htmlhttps://blog.csdn.net/zhaodedong/article/details/73385667