数据质量监控工具-Apache Griffin

[TOC]html

1、概述

随着业务发展和数据量的增长,大数据应用开发已成为部门应用开发经常使用的开发方式,因为部门业务特色的关系,spark和hive应用开发在部门内部较为常见。当处理的数据量达到必定量级和系统的复杂度上升时,数据的惟一性、完整性、一致性等等校验就开始受到关注,而一般作法是根据业务特色,额外开发job如报表或者检查任务,这样会比较费时费力。git

目前遇到的表大部分在几亿到几十亿的数据量之间,而且报表数量在不断增长,在这种状况下,一个可配置、可视化、可监控的数据质量工具就显得尤其重要了。Griffin 数据质量监控工具正是能够解决前面描述的数据质量问题的开源解决方案。github

2、Apache Griffin

Griffin起源于eBay中国,并于2016年12月进入Apache孵化器,Apache软件基金会2018年12月12日正式宣布Apache Griffin毕业成为Apache顶级项目。正则表达式

Griffin是属于模型驱动的方案,基于目标数据集合或者源数据集(基准数据),用户能够选择不一样的数据质量维度来执行目标数据质量的验证。支持两种类型的数据源:batch数据和streaming数据。对于batch数据,咱们能够经过数据链接器从Hadoop平台收集数据。对于streaming数据,咱们能够链接到诸如Kafka之类的消息系统来作近似实时数据分析。在拿到数据以后,模型引擎将在spark集群中计算数据质量。算法

2.1 特性

  • 度量:精确度、完整性、及时性、惟一性、有效性、一致性。
  • 异常监测:利用预先设定的规则,检测出不符合预期的数据,提供不符合规则数据的下载。
  • 异常告警:经过邮件或门户报告数据质量问题。
  • 可视化监测:利用控制面板来展示数据质量的状态。
  • 实时性:能够实时进行数据质量检测,可以及时发现问题。
  • 可扩展性:可用于多个数据系统仓库的数据校验。
  • 可伸缩性:工做在大数据量的环境中,目前运行的数据量约1.2PB(eBay环境)。
  • 自助服务:Griffin提供了一个简洁易用的用户界面,能够管理数据资产和数据质量规则;同时用户能够经过控制面板查看数据质量结果和自定义显示内容。

2.1.1 数据质量指标说明

  • 精确度:度量数据是否与指定的目标值匹配,如金额的校验,校验成功的记录与总记录数的比值。
  • 完整性:度量数据是否缺失,包括记录数缺失、字段缺失,属性缺失。
  • 及时性:度量数据达到指定目标的时效性。
  • 惟一性:度量数据记录是否重复,属性是否重复;常见为度量为hive表主键值是否重复。
  • 有效性:度量数据是否符合约定的类型、格式和数据范围等规则。
  • 一致性:度量数据是否符合业务逻辑,针对记录间的逻辑的校验,如:pv必定是大于uv的,订单金额加上各类优惠以后的价格必定是大于等于0的。

2.2 优点

  • 可配置、可自定义的数据质量验证。
  • 基于spark的数据分析,能够快速计算数据校验结果。
  • 历史数据质量趋势可视化。

2.3 工做流程

  1. 注册数据,把想要检测数据质量的数据源注册到griffin。
  2. 配置度量模型,能够从数据质量维度来定义模型,如:精确度、完整性、及时性、惟一性等。
  3. 配置定时任务提交spark集群,定时检查数据。
  4. 在门户界面上查看指标,分析数据质量校验结果。

2.4 系统架构

Griffin 系统主要分为:数据收集处理层(Data Collection&Processing Layer)、后端服务层(Backend Service Layer)和用户界面(User Interface),如图:apache

Griffin技术组件

系统数据处理分层结构图:后端

Griffin架构图

系统处理流程图:api

Griffin工做流

2.5 数据验证逻辑

2.5.1 精确度验证(accurancy),从hive metadata中加载数据源,校验精确度架构

  • 选择source表及列
  • 选择target表及列
  • 选择字段比较规则(大于、小于或者相等)
  • 经过一个公式计算出结果:

精确度计算公式

  • 最后在控制面板查看精确度趋势

精确度趋势图

2.5.2 数据统计分析(profiling)ide

  • 选择须要进行分析的数据源,配置字段等信息。
  • 简单的数据统计:用来统计表的特定列里面值为空、惟一或是重复的数量。例如统计字段值空值记录数超过指定一点阈值,则可能存在数据丢失的状况。
  • 汇总统计:用来统计最大值、最小值、平均数、中值等。例如统计年龄列的最大值最小值判断是否存在数据异常。
  • 高级统计:用正则表达式来对数据的频率和模式进行分析。例如邮箱字段的格式验证,指定规则的数据验证。
  • 数据分析机制主要是基于Spark的MLlib提供的列汇总统计功能,它对全部列的类型统计只计算一次。
  • 控制面板分析数据

数据统计图

2.5.3 异常检测

  • 异常检测的目标是从看似正常的数据中发现异常状况,是一个检测数据质量问题的重要工具。经过使用BollingerBands和MAD算法来实现异常检测功能,能够发现数据集中那些远远不符合预期的数据。

  • 以MAD做为例子,一个数据集的MAD值反映的是每一个数据点与均值之间的距离。能够经过如下步骤来获得MAD值:

    • 算出平均值
    • 算出每个数据点与均值的差
    • 对差值取绝对值
    • 算出这些差值取绝对值以后的平均值

    公式以下: MAD公式

    经过异常检测能够发现数据值的波动大小是否符合预期,数据的预期值则是在对历史趋势的分析中得来的,用户能够根据检测到的异常来调整算法中必要的参数,让异常检测更贴近需求。

2.6 Demo

以检测供应商帐单明细表的同步精确度为例,配置数据检测,如图:

  • 选择数据源

  • 选择帐单明细源表字段

选择源表字段

  • 选择帐单明细目标表字段

选择目标表字段

  • 设置源表和目标表的校验字段映射关系

设置映射关系

  • 选择数据分区、条件和是否输出结果文件。(无分区表能够跳过)

选择分区条件

  • 设置验证项目名称和描述,提交后就能够在列表看到度量的信息了

设置名称和描述

度量列表

建立了数据模型度量后,须要相应的spark定时任务来执行分析,接下来就是建立spark job和调度信息了

  • 在job菜单下,选择Create Job

建立job

建立job界面中须要选择源表和目标表数据范围,如上图所示是选择t-1到当前的数据分区,即昨天的数据分区。设置定时表达式,提交任务后便可在job列表中查看:

job任务执行

  • 到这里,数据验证度量和分析任务都已配置完成,后面还可根据你的指标设置邮件告警等监控信息,接下来就能够在控制面板上监控你的数据质量了,如图:

2.7 后台提交监控任务

除了用户在控制面板建立数据验证任务,也能够经过后台生成指标信息,提交spark任务进行数据检测,提供了良好的数据接入和配置的扩展性,api配置数据检测可查看官网快速指引

实时数据检测目前未有界面配置,能够经过api的方式提交实时数据监控,详细内容能够参考:Streaming Use Cases

赖泽坤@vipshop.com

参考文档

相关文章
相关标签/搜索