概述
随着业务发展和数据量的增加,大数据应用开发已成为部门应用开发常用的开发方式,由于部门业务特点的关系,spark和hive应用开发在部门内部较为常见。当处理的数据量达到一定量级和系统的复杂度上升时,数据的唯一性、完整性、一致性等等校验就开始受到关注,而通常做法是根据业务特点,额外开发job如报表或者检查任务,这样会比较费时费力。
目前遇到的表大部分在几亿到几十亿的数据量之间,并且报表数量在不断增加,在这种情况下,一个可配置、可视化、可监控的数据质量工具就显得尤为重要了。以下介绍几个国内外主流的技术解决方案及框架。
一.Apache Griffin(Ebay开源数据质量监控平台)
Griffin起源于eBay中国,并于2016年12月进入Apache孵化器,Apache软件基金会2018年12月12日正式宣布Apache Griffin毕业成为Apache顶级项目。
数据质量模块是大数据平台中必不可少的一个功能组件,Apache Griffin(以下简称Griffin)是一个开源的大数据数据质量解决方案,它支持批处理和流模式两种数据质量检测方式,可以从不同维度(比如离线任务执行完毕后检查源端和目标端的数据数量是否一致、源表的数据空值数量等)度量数据资产,从而提升数据的准确度、可信度。对于batch数据,我们可以通过数据连接器从Hadoop平台收集数据。对于streaming数据,我们可以连接到诸如Kafka之类的消息系统来做近似实时数据分析。在拿到数据之后,模型引擎将在spark集群中计算数据质量。
1.1 工作流程
在Griffin的架构中,主要分为Define、Measure和Analyze三个部分:
各部分的职责如下:
-
Define:主要负责定义数据质量统计的维度,比如数据质量统计的时间跨度、统计的目标(源端和目标端的数据数量是否一致,数据源里某一字段的非空的数量、不重复值的数量、最大值、最小值、top5的值数量等)
-
Measure:主要负责执行统计任务,生成统计结果
-
Analyze:主要负责保存与展示统计结果
基于以上功能,我们大数据平台计划引入Griffin作为数据质量解决方案,实现数据一致性检查、空值统计等功能。
1.2 特点
-
度量:精确度、完整性、及时性、唯一性、有效性、一致性。
-
异常监测:利用预先设定的规则,检测出不符合预期的数据,提供不符合规则数据的下载。
-
异常告警:通过邮件或门户报告数据质量问题。
-
可视化监测:利用控制面板来展现数据质量的状态。
-
实时性:可以实时进行数据质量检测,能够及时发现问题。
-
可扩展性:可用于多个数据系统仓库的数据校验。
-
可伸缩性:工作在大数据量的环境中,目前运行的数据量约1.2PB(eBay环境)。
-
自助服务:Griffin提供了一个简洁易用的用户界面,可以管理数据资产和数据质量规则;同时用户可以通过控制面板查看数据质量结果和自定义显示内容。
1.3 数据质量模型
Apache Griffin 是一个模型驱动的解决方案,用户可以根据选定的目标数据集或源数据集(作为黄金参考数据)选择各种数据质量维度来执行他们的数据质量验证。它在后端有相应的库支持,用于以下测量:
-
精确度:度量数据是否与指定的目标值匹配,如金额的校验,校验成功的记录与总 记录数的比值。
-
完整性:度量数据是否缺失,包括记录数缺失、字段缺失,属性缺失。
-
及时性:度量数据达到指定目标的时效性。
-
唯一性:度量数据记录是否重复,属性是否重复;常见度量为hive表主键值是否重复。
-
有效性:度量数据是否符合约定的类型、格式和数据范围等规则。
-
一致性:度量数据是否符合业务逻辑,针对记录间的逻辑的校验,如:pv一定是大于uv的,订单金额加上各种优惠之后的价格一定是大于等于0的。
1.4 官方及参考资料
-
Apache Griffin的github项目链接 https://github.com/apache/griffin
-
Apache Griffin 官方网站 https://griffin.apache.org/
二. Deequ(Amazon开源数据质量监控平台)
Deequ 是亚马逊开源的一个构建在 Apache Spark 之上的库,用于定义“数据单元测试”,用于测量大型数据集中的数据质量。同时它还提供了python接口PyDeequ, PyPi, Documents。PyDeequ,这是一个基于 Deequ(一种在亚马逊开发和使用的开源工具)之上的开源 Python 包装器。Deequ 是用 Scala 编写的,而 PyDeequ 可以使用 Python 和 PySpark(许多数据科学家选择的语言)的数据质量和测试功能。PyDeequ 能与许多数据科学库一起使用,使 Deequ 扩展其功能。此外,PyDeequ 可以与 Pandas DataFrames 进行流畅的接口,而不是在 Apache Spark DataFrames 内进行限制。
Deequ 可以计算数据质量指标,定义和验证数据质量约束,并了解数据分布的变化。使开发人员专注于描述数据的外观,而不是自己实施检查和验证算法。Deequ 通过checks提供支持。Deequ 基于 Apache Spark 之上实现,旨在扩展通常位于数据湖、分布式文件系统或数据仓库中的大型数据集(数十亿行)。PyDeequ 可以访问以上功能,也可在 Python Jupyte notebook环境中使用它。
2.1 特点
-
指标计算——Deequ 计算数据质量指标,即完整性、最大值或相关性等统计数据。Deequ 使用 Spark 从 Amazon Simple Storage Service (Amazon S3) 等来源读取数据,并通过一组优化的聚合查询计算指标。可直接访问根据数据计算的原始指标。
-
约束验证——用户可专注于定义一组要验证的数据质量约束。Deequ 负责导出要对数据进行计算的所需指标集。Deequ 生成数据质量报告,其中包含约束验证的结果。
-
约束建议 - 用户可选择定义自己的自定义数据质量约束,或使用自动约束建议方法来分析数据以推断有用的约束。
-
Python 包装器——可使用 Python 语法调用每个 Deequ 函数。包装器将命令转换为底层 Deequ 调用并返回它们的响应。
2.2 架构
三. DataWorks(阿里巴巴数据质量监控平台)
DataWorks(数据工场,原大数据开发套件)是阿里云重要的PaaS(Platform-as-a-Service)平台产品,可提供数据集成、数据开发、数据地图、数据质量和数据服务等全方位的产品服务,一站式开发管理的界面,帮助企业专注于数据价值的挖掘和探索。
DataWorks支持多种计算和存储引擎服务,包括离线计算MaxCompute、开源大数据引擎E-MapReduce、实时计算(基于Flink)、机器学习PAI、图计算服务Graph Compute和交互式分析服务等,并且支持用户自定义接入计算和存储服务。DataWorks可提供全链路智能大数据及AI开发和治理服务。
DataWorks,可对数据进行传输、转换和集成等操作,从不同的数据存储引入数据,并进行转化和开发,最后将处理好的数据同步至其它数据系统。
3.1 架构
3.2 数据质量
数据质量是支持多种异构数据源的质量校验、通知及管理服务的一站式平台。
数据质量依托DataWorks平台,提供全链路的数据质量方案,包括数据探查、对比、质量监控、SQL扫描和智能报警等功能。
数据质量监控可以全程监控数据加工流水线,根据质量规则及时发现问题,并通过报警通知负责人及时处理。
数据质量以数据集(DataSet)为监控对象。目前,数据质量支持EMR(E-MapReduce)、Hologres、AnalyticDB for PostgreSQL、MaxCompute数据表和DataHub实时数据流的监控。当离线数据发生变化时,数据质量会对数据进行校验,并阻塞生产链路,以避免问题数据污染扩散。同时,数据质量支持管理历史校验结果,用户可对数据质量进行分析和定级。
在流式数据场景下,数据质量能够基于DataHub数据通道进行监控和断流,第一时间告警给订阅用户。数据质量支持设置橙色、红色告警等级和告警频次,最大限度地减少冗余报警。
四. DataMan(美团点评数据质量监控平台)
DataMan系统建设总体方案基于美团的大数据技术平台。自底向上包括:检测数据采集、质量集市处理层;质量规则引擎模型存储层;系统功能层及系统应用展示层等。整个数据质量检核点基于技术性、业务性检测,形成完整的数据质量报告与问题跟踪机制,创建质量知识库,确保数据质量的完整性(Completeness)、正确性(Correctness)、当前性(Currency)、一致性(Consistency)。
网友评论