赞
踩
随着业务发展和数据量的增加,大数据应用开发已成为部门应用开发常用的开发方式,由于部门业务特点的关系,spark和hive应用开发在部门内部较为常见。当处理的数据量达到一定量级和系统的复杂度上升时,数据的唯一性、完整性、一致性等等校验就开始受到关注,而通常做法是根据业务特点,额外开发job如报表或者检查任务,这样会比较费时费力。
目前遇到的表大部分在几亿到几十亿的数据量之间,并且报表数量在不断增加,在这种情况下,一个可配置、可视化、可监控的数据质量工具就显得尤为重要了。Griffin 数据质量监控工具正是可以解决前面描述的数据质量问题的开源解决方案。
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),如图:
系统数据处理分层结构图:
系统处理流程图:
2.5.1 精确度验证(accurancy),从hive metadata中加载数据源,校验精确度
2.5.2 数据统计分析(profiling)
2.5.3 异常检测
异常检测的目标是从看似正常的数据中发现异常情况,是一个检测数据质量问题的重要工具。通过使用BollingerBands和MAD算法来实现异常检测功能,可以发现数据集中那些远远不符合预期的数据。
以MAD作为例子,一个数据集的MAD值反映的是每个数据点与均值之间的距离。可以通过以下步骤来得到MAD值:
公式如下:
通过异常检测可以发现数据值的波动大小是否符合预期,数据的预期值则是在对历史趋势的分析中得来的,用户可以根据检测到的异常来调整算法中必要的参数,让异常检测更贴近需求。
以检测供应商账单明细表的同步精确度为例,配置数据检测,如图:
选择数据源
选择账单明细源表字段
选择账单明细目标表字段
设置源表和目标表的校验字段映射关系
选择数据分区、条件和是否输出结果文件。(无分区表可以跳过)
设置验证项目名称和描述,提交后就可以在列表看到度量的信息了
创建了数据模型度量后,需要相应的spark定时任务来执行分析,接下来就是创建spark job和调度信息了
创建job界面中需要选择源表和目标表数据范围,如上图所示是选择t-1到当前的数据分区,即昨天的数据分区。设置定时表达式,提交任务后即可在job列表中查看:
除了用户在控制面板创建数据验证任务,也可以通过后台生成指标信息,提交spark任务进行数据检测,提供了良好的数据接入和配置的扩展性,api配置数据检测可查看官网快速指引。
实时数据检测目前未有界面配置,可以通过api的方式提交实时数据监控,详细内容可以参考:Streaming Use Cases。
written by 赖泽坤@vipshop.com
参考文档
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。