[TOC]html
随着业务发展和数据量的增长,大数据应用开发已成为部门应用开发经常使用的开发方式,因为部门业务特色的关系,spark和hive应用开发在部门内部较为常见。当处理的数据量达到必定量级和系统的复杂度上升时,数据的惟一性、完整性、一致性等等校验就开始受到关注,而一般作法是根据业务特色,额外开发job如报表或者检查任务,这样会比较费时费力。git
目前遇到的表大部分在几亿到几十亿的数据量之间,而且报表数量在不断增长,在这种状况下,一个可配置、可视化、可监控的数据质量工具就显得尤其重要了。Griffin 数据质量监控工具正是能够解决前面描述的数据质量问题的开源解决方案。github
Griffin起源于eBay中国,并于2016年12月进入Apache孵化器,Apache软件基金会2018年12月12日正式宣布Apache Griffin毕业成为Apache顶级项目。正则表达式
Griffin是属于模型驱动的方案,基于目标数据集合或者源数据集(基准数据),用户能够选择不一样的数据质量维度来执行目标数据质量的验证。支持两种类型的数据源:batch数据和streaming数据。对于batch数据,咱们能够经过数据链接器从Hadoop平台收集数据。对于streaming数据,咱们能够链接到诸如Kafka之类的消息系统来作近似实时数据分析。在拿到数据以后,模型引擎将在spark集群中计算数据质量。算法
Griffin 系统主要分为:数据收集处理层(Data Collection&Processing Layer)、后端服务层(Backend Service Layer)和用户界面(User Interface),如图:apache
系统数据处理分层结构图:后端
系统处理流程图:api
2.5.1 精确度验证(accurancy),从hive metadata中加载数据源,校验精确度架构
2.5.2 数据统计分析(profiling)ide
2.5.3 异常检测
异常检测的目标是从看似正常的数据中发现异常状况,是一个检测数据质量问题的重要工具。经过使用BollingerBands和MAD算法来实现异常检测功能,能够发现数据集中那些远远不符合预期的数据。
以MAD做为例子,一个数据集的MAD值反映的是每一个数据点与均值之间的距离。能够经过如下步骤来获得MAD值:
公式以下:
经过异常检测能够发现数据值的波动大小是否符合预期,数据的预期值则是在对历史趋势的分析中得来的,用户能够根据检测到的异常来调整算法中必要的参数,让异常检测更贴近需求。
以检测供应商帐单明细表的同步精确度为例,配置数据检测,如图:
建立了数据模型度量后,须要相应的spark定时任务来执行分析,接下来就是建立spark job和调度信息了
建立job界面中须要选择源表和目标表数据范围,如上图所示是选择t-1到当前的数据分区,即昨天的数据分区。设置定时表达式,提交任务后便可在job列表中查看:
除了用户在控制面板建立数据验证任务,也能够经过后台生成指标信息,提交spark任务进行数据检测,提供了良好的数据接入和配置的扩展性,api配置数据检测可查看官网快速指引。
实时数据检测目前未有界面配置,能够经过api的方式提交实时数据监控,详细内容能够参考:Streaming Use Cases。
参考文档