Apache griffin的搭建及应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache griffin的搭建及应用相关的知识,希望对你有一定的参考价值。

参考技术A 我们面临的问题

      随着接入产品的日益增多,以及数据仓库表、字段的日益丰富,数据侧和策略侧对数据质量的关注,越发的迫切;如何能够快速、高效的对核心数据资产,有一个清晰的认知和监控,成为了数据侧需要解决的难题。

我们的解决方案

    首先考虑到团队的实际情况,优先考虑借鉴公司内部或者开源的产品,避免人员的大量投入。最终经过前期的调研, 我们选择了Apach griffin。Apache griffin 是ebay中国开源的项目,2018年成为了Apache 下面的顶级开源项目。Apache griffin能解决哪些问题呢?

          1. 数据的一致性检测,例如两张表内,相关字段的一致性问题

          2. 数据的完整性,字段、取值是否有异常,比如过多的空值、或者枚举值不在合法的范围内等问题

          3. 数据的唯一性:其内部定制化了一些常用的规则,如计算相关字段的去重个数

          4. 有效性:用户可以通过自定义规则,支持字段合法性的校验,例如IMEI、安卓ID是否合规等

Apache griffin的搭建

在搭建过程中,可以参见Apache griffin相关的文档,例如:

https://git.efivestar.com/projects/INFRA/repos/infra-bigdata/browse/doc/griffin/griffin.md?at=master

在此项目内,我们使用的Apache griffin的最新版本5.0,由于业务场景的要求,主要是对batch数据进行监控;同时,在上述文档的配置中,缺少了对measure项目相关配置,需要在源码内,对src/main/resources下的env-batch.json进行配置,修改其中的spark.master方式为yarn,同时设置HDFS和ES的相关配置信息。

搭建过程中注意事项

1. ES的密码问题;在搭建过程中,由于采用的公司ES集群,需要设置用户的账户和密码信息;在service/src/resources下,配置文件预留了相关的参数,但是在measure项目中,却没有保留用户名和密码的相关参数,会导致在spark写入ES的过程中,由于授权问题,导致失败;解决办法比较简单粗暴,在ElasticSearchSink类中,找到httpResult方法,在header参数中,增加Authorization头,并加入对应的参数值(此处为了快速尝试,采用了硬编码,后期可以从配置中读取);如下所示:

    2. 在创建measure时,需要从hive中读取所有的DB和tables,加载任务过久

通过前端接口,查看页面加载时调用的方法和对应接口,并定位相关的函数,修改一下两个方法,让其只加载配置文件中定义的DB,降低返回数据量;

Apache griffin的应用

· 完事具备,只欠使用;griffin支持四中主要的任务,在我们这里只关注前两个,accuracy和profiling。首先,可以参照网上教程创建对应的measure,其次创建对应的Job信息;此处可以支持任务的例行化及指标的可视化等;

下一步的工作

监控的核心诉求,还是在发生问题时,进行异常的报警周知;下一步工作会将公司统一的报警接口,集成到griffin平台内,当数据有异常波动时,周知相关的负责人。

数仓之数据质量及Apache Griffin简介


概述

垃圾进,垃圾出(garbage in,garbage out)。数据质量定义:

数据质量可能不是数据治理的最核心部分,但可能会成为数据治理落地的最大障碍。

评估

一般从以下6个方面评估数据质量:

  • 完整性:数据的记录和信息是否完整,是否存在缺失情况;
  • 一致性:数据的记录是否符合规范,是否与前后及其它数据集保持统一;
  • 准确性:数据中记录的信息和数据是否准确,是否存在异常或者错误信息;
  • 合规性:数据是否以非标准格式存储;
  • 重复性:是否记录重复数据
  • 及时性:数据从产生到可以查看的时间间隔,也叫数据的延时时长。

另外,全国信息技术标准化技术委员会提出的数据质量评价指标(GB/T36344-2018 ICS 35.24.01),它包含以下几个方面:

  • 规范性:指的是数据符合数据标准、数据模型、业务规则、元数据或权威参考数据的程度。例如 GB/T 2261.1-2003 中定义的性别代码标准是 0 表示未知性别,1 表示男,2 表示女,9 表示未说明。GB 11643-1999 中定义的居民身份证编码规则是 6 位数字地址码,8 位数字出生日期码,三位数字顺序码,一位数字校验码。
  • 完整性:指的是按照数据规则要求,数据元素被赋予数值的程度。例如互联网 + 监管主题库中,监管对象为特种设备时,监管对象标识必须包含企业统一社会信用代码 + 产品品牌 + 设备编码,监管对象为药品时,监管对象标识必须包含药品名称 + 批准文号 + 生产批号。
  • 准确性:指的是数据准确表示其所描述的真实实体(实际对象)真实值的程度。例如互联网 + 监管行政检查行为中的行政相对人为公民时,证件类型和证件号码只能是身份证号码。
  • 一致性:指的是数据与其它特定上下文中使用的数据无矛盾的程度。例如许可证信息与法人基础信息是否一致,检查计划与检查记录是否匹配。
  • 时效性:指的是数据在时间变化中的正确程度。例如企业住址搬迁后,企业法人库中的住址是否及时更新。营业执照已经办理,许可照办理时是否可以及时获取到营业执照信息。
  • 可访问性:指的是数据能被访问的程度。

除此之外,还有一些业内认可的补充指标,并且在质量工作的实际开展中,可以根据数据的实际情况和业务要求进行扩展,例如:

  • 唯一性:描述数据是否存在重复记录(国标归在准确性中)。
  • 稳定性:描述数据的波动是否是稳定的,是否在其有效范围内。
  • 可信性:描述数据来源的权威性、数据的真实性、数据产生的时间近、鲜活度高。

数据质量(Data Quality)管理贯穿数据生命周期的全过程,覆盖质量评估、数据监控、数据探查、数据清洗、数据诊断等方面。

数据质量问题

  • 数据真实性:数据必须真实准确的反映客观的实体存在或真实的业务,真实可靠的原始统计数据是企业统计工作的灵魂,是一切管理工作的基础,是经营者进行正确经营决策必不可少的第一手资料。
  • 数据准确性:准确性也叫可靠性,字段值缺失,空值。是用于分析和识别哪些是不准确的或无效的数据,不可靠的数据可能会导致严重的问题,会造成有缺陷的方法和糟糕的决策。
  • 数据唯一性:用于识别和度量重复数据、冗余数据。重复数据是导致业务无法协同、流程无法追溯的重要因素,也是数据治理需要解决的最基本的数据问题。
  • 数据完整性:数据完整性问题包括:模型设计不完整,如:唯一性约束不完整、参照不完整;数据条目不完整,例如:数据记录丢失或不可用;数据属性不完整,例如:数据属性空值。不完整的数据所能借鉴的价值就会大大降低,也是数据质量问题最为基础和常见的一类问题。
  • 数据一致性:多源数据的数据模型不一致,如:命名(含义)、数据结构、约束规则、数据实体、数据量条数、数据编码、分类层次、生命周期不一致等。相同的数据有多个副本的情况下的数据不一致、数据内容冲突的问题。
  • 数据关联性:数据关联性问题是指存在数据关联的数据关系缺失或错误,例如:函数关系、相关系数、主外键关系、索引关系等。存在数据关联性问题,会直接影响数据分析的结果,进而影响管理决策。
  • 数据及时性:数据的及时性(In-time)是指能否在需要的时候获到数据,数据的及时性与企业的数据处理速度及效率有直接的关系,是影响业务处理和管理效率的关键指标。

数据质量检测和量化

  1. 有效性
  • 字段长度有效
  • 字段内容有效
  • 字段数值范围有效
  • 枚举值集合有效
  1. 唯一性
  • 对主键是否存在重复数据的监控指标
  1. 完整性
  • 字段是否为空或NULL
  • 记录数是否丢失
  • 记录数环比波动
  • 录数波动范围
  • 记录数方差检验
  1. 准确性
  • 数值同比
  • 数值环比
  • 数值方差检验
  • 表逻辑检查
  1. 一致性
  • 表级别一致性检查
  1. 时效性
  • 表级别质量监控指标,数据是否按时产出
  1. 数据剖析
  • 最大值检查
  • 最小值检查
  • 平均值检查
  • 汇总值检查
  1. 自定义规则检查
  • 用户写自定义SQL实现的监控规则
    从有效性、唯一性、完整性、准确性、一致性、时效性、数据剖析和自定义规则检查等几个维度对数据质量进行测量,但对于现在超级大的数据量级监控所有的数据是不符合成本效率的。因此,知道哪些数据为最关键的,对这些关键数据进行全链路的数据质量,这样有助于防止错误或揭示改进的机会。
  • 数据质量问题的量化
    对于数据质量的检测结果进行分析和量化,查找出现质量问题的数据链环节,定位数据问题,实行问责机制。

数据质量管理

Data Quality Management,是指对数据从计划、获取、存储、共享、维护、应用、消亡生命周期的每个阶段里可能引发的各类数据质量问题,进行识别、度量、监控、预警等一系列管理活动,并通过改善和提高组织的管理水平使得数据质量获得进一步提高。数据质量管理不是一时的数据治理手段,而是循环的管理过程。其终极目标是通过可靠的数据,提升数据在使用中的价值,并最终为企业赢得经济效益。

Griffin

​官网​​​​GitHub​​ Apache Griffin,eBay开源的大数据数据质量解决方案,支持批处理和流模式两种数据质量检测方式,基于Hadoop和Spark建立的数据质量服务平台 (DQSP)。提供一个全面的框架来处理不同的任务,例如定义数据质量模型、执行数据质量测量、自动化数据分析和验证,以及跨多个数据系统的统一数据质量可视化。可从不同维度度量数据资产,提升数据的准确度和可信度,如:离线任务执行完毕后检查源端和目标端的数据数量是否一致,源表的数据空值等。

功能:

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

支持的数据源包括Hive,AVRO,Kafka,MySQL和其他RDBM。

架构

数仓之数据质量及Apache


各部分的职责如下:

  • Define:主要负责定义数据质量统计的维度,比如数据质量统计的时间跨度、统计的目标(源端和目标端的数据数量是否一致,数据源里某一字段的非空的数量、不重复值的数量、最大值、最小值、top5的值数量等)
  • Measure:主要负责执行统计任务,生成统计结果
  • Analyze:主要负责保存与展示统计结果

一个完整的Griffin任务的执行流程:

数仓之数据质量及Apache


注册数据,把想要检测数据质量的数据源注册到griffin。

配置度量模型,可以从数据质量维度来定义模型,如:精确度、完整性、及时性、唯一性等。

配置定时任务提交spark集群,定时检查数据。

在门户界面上查看指标,分析数据质量校验结果。

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

数仓之数据质量及Apache


数据处理和存储层:

对于批量分析,数据质量模型将根据 hadoop 中的数据源计算 Spark 集群中的数据质量指标。

对于近实时分析,使用来自消息传递系统的数据,然后数据质量模型将基于Spark 集群计算实时数据质量指标。对于数据存储,可以在后端使用ES来满足前端请求。

Apache Griffin 服务:
项目有提供Restful 服务来完成Griffin 的所有功能,例如探索数据集、创建数据质量度量、发布指标、检索指标、添加订阅等。开发人员可以基于这些 Web 开发自己的用户界面服务。

安装

实战

其他工具

通过试用其他工具,来学习数据质量管理的思路和经验。

Deequ

Amazon开源,​​GitHub​​,

Great Expectations

​GitHub​​,Python的工具包,数据科学领域。

DataWorks

阿里

DataMan

美团点评

Qualitis

​GitHub​

参考

  • ​​大数据:数据质量​​
  • ​​如何提升大数据数据质量​​
  • ​​大数据环境下的数据质量管理策略​​
  • ​数据质量管理​
  • 数据质量监控框架及解决方案总结
  • 数据质量管理工具预研
  • 开源数据质量解决方案——Apache Griffin入门宝典


以上是关于Apache griffin的搭建及应用的主要内容,如果未能解决你的问题,请参考以下文章

Linux搭建数据质量监控 Griffin

翻译(zh-CN):Apache Griffin API

翻译(zh-CN):Apache Griffin API

翻译(zh-CN):Apache Griffin DSL

翻译(zh-CN):Apache Griffin DSL

Griffin调研笔记 --- 数据质量监控服务