随着业务发展和数据量的增加,大数据应用开发已成为部门应用开发常用的开发方式,由于部门业务特点的关系,spark和hive应用开发在部门内部较为常见。当处理的数据量达到一定量级和系统的复杂度上升时,数据的唯一性、完整性、一致性等等校验就开始受到关注,而通常做法是根据业务特点,额外开发job如报表或者检查任务,这样会比较费时费力。
目前遇到的表大部分在几亿到几十亿的数据量之间,并且报表数量在不断增加,在这种情况下,一个可配置、可视化、可监控的数据质量工具就显得尤为重要了。以下介绍几个国内外主流的技术解决方案及框架。
Griffin起源于eBay中国,并于2016年12月进入Apache孵化器,Apache软件基金会2018年12月12日正式宣布Apache Griffin毕业成为Apache顶级项目。
数据质量模块是大数据平台中必不可少的一个功能组件,Apache Griffin(以下简称Griffin)是一个开源的大数据数据质量解决方案,它支持批处理和流模式两种数据质量检测方式,可以从不同维度(比如离线任务执行完毕后检查源端和目标端的数据数量是否一致、源表的数据空值数量等)度量数据资产,从而提升数据的准确度、可信度。对于batch数据,我们可以通过数据连接器从Hadoop平台收集数据。对于streaming数据,我们可以连接到诸如Kafka之类的消息系统来做近似实时数据分析。在拿到数据之后,模型引擎将在spark集群中计算数据质量。
在Griffin的架构中,主要分为Define、Measure和Analyze三个部分:
各部分的职责如下:
基于以上功能,我们大数据平台计划引入Griffin作为数据质量解决方案,实现数据一致性检查、空值统计等功能。
Apache Griffin 是一个模型驱动的解决方案,用户可以根据选定的目标数据集或源数据集(作为黄金参考数据)选择各种数据质量维度来执行他们的数据质量验证。它在后端有相应的库支持,用于以下测量:
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环境中使用它。
DataWorks(数据工场,原大数据开发套件)是阿里云重要的PaaS(Platform-as-a-Service)平台产品,可提供数据集成、数据开发、数据地图、数据质量和数据服务等全方位的产品服务,一站式开发管理的界面,帮助企业专注于数据价值的挖掘和探索。
DataWorks支持多种计算和存储引擎服务,包括离线计算MaxCompute、开源大数据引擎E-MapReduce、实时计算(基于Flink)、机器学习PAI、图计算服务Graph Compute和交互式分析服务等,并且支持用户自定义接入计算和存储服务。DataWorks可提供全链路智能大数据及AI开发和治理服务。
DataWorks,可对数据进行传输、转换和集成等操作,从不同的数据存储引入数据,并进行转化和开发,最后将处理好的数据同步至其它数据系统。
数据质量是支持多种异构数据源的质量校验、通知及管理服务的一站式平台。
数据质量依托DataWorks平台,提供全链路的数据质量方案,包括数据探查、对比、质量监控、SQL扫描和智能报警等功能。
数据质量监控可以全程监控数据加工流水线,根据质量规则及时发现问题,并通过报警通知负责人及时处理。
数据质量以数据集(DataSet)为监控对象。目前,数据质量支持EMR(E-MapReduce)、Hologres、AnalyticDB for PostgreSQL、MaxCompute数据表和DataHub实时数据流的监控。当离线数据发生变化时,数据质量会对数据进行校验,并阻塞生产链路,以避免问题数据污染扩散。同时,数据质量支持管理历史校验结果,用户可对数据质量进行分析和定级。
在流式数据场景下,数据质量能够基于DataHub数据通道进行监控和断流,第一时间告警给订阅用户。数据质量支持设置橙色、红色告警等级和告警频次,最大限度地减少冗余报警。
DataMan系统建设总体方案基于美团的大数据技术平台。自底向上包括:检测数据采集、质量集市处理层;质量规则引擎模型存储层;系统功能层及系统应用展示层等。整个数据质量检核点基于技术性、业务性检测,形成完整的数据质量报告与问题跟踪机制,创建质量知识库,确保数据质量的完整性(Completeness)、正确性(Correctness)、当前性(Currency)、一致性(Consistency)。