ITPub博客

首页 > 数据库 > 数据库开发技术 > 大数据系统数据质量如何保障?

大数据系统数据质量如何保障?

原创 数据库开发技术 作者:安瑞哥是码农 时间:2023-02-02 18:15:00 0 删除 编辑


这个是一个星球球友提出的问题,大致的问题描述如下:

我们当前有个大数据项目,目前已经完成了数据源接入、落地、存储、计算等一系列数据操作,算是把这个项目的基础部分已经完成了。


那么接下来,我被要求写一个关于这个项目的数据治理保障方案,不知道可以提供哪些思路?

其实类似问题,我在之前写过一篇关于数据治理的文章,只不过那篇文章篇幅比较长,很多人可能都没有耐心读完,如果你有兴趣,可以回顾一下(关于数据治理,聊几句).


对于一个完善、成熟的数据系统来说,建立必要的数据质量保障确实是非常重要的,尤其是当你的业务数据涉及到很敏感、重要的信息时。


有的同学看到,要对一个大数据系统做数据质量保障,顿时就懵逼了,想着,这么大的一个系统工程,我该如何下手呢。


其实,越是看似大的东西,越不要怕,因为都是可以拆解的,只要你能掌握一定的方法论,将其合理的拆解为多个部分,然后各个击破,问题就很容易解决。


我们知道,对于一个大数据系统来说,是可以将其分解成几个固定的模块的,这个我在之前的文章和视频中有多次提及,如下图所示:



针对这几个部分的数据质量保障,下面咱展开来说说:



1. 数据源数据质量保障


对于任何一个数据系统来说,数据源是一个系统的生命源泉,是构建一个完整系统的第一步。


那么这一步的数据质量管理如何做?


  • 估算数据流量:一般对于固定的数据源,业务方是可以提供该数据源每天,或者每次提供的数据量的,比如每秒多少条、每小时多少条、或者每天多少条?


    大致确定数据条数之后,就可以针对不同的数据源,在数据接入的时候,设置基于数据量的阈值,超出该阈值,则进行对应的告警。

  • 确定数据源的格式与规范:在数据源确定之后,除了大致确定数据流量之外,还应该跟数据源方约定好其他一些规范,比如每个数据源的字段数量、字段类型,关键字段的值校验等等。

    同样,在数据接入的时候,加入判断逻辑看数据源格式是否符合该要求,如果不符合约定要求,则进行告警。


以上,便是我觉得比较通用的,对数据源数据质量进行保障的一些可行的方法。


优点:可以第一时间发现问题,并把它扼杀在摇篮里,避免扩散到后续流程中,产生糟糕的业务结果。



2. 数据落地的数据质量保障

第一步咱既然把数据源给接过来了,那接下来,自然就是想着给放到大数据平台的某个地方。

不管放哪,HDFS也好,消息队列也罢,或者其他任何可以保存数据的存储组件,那么对于这一步,可以从下面2个方面来考虑数据质量的保障问题:

  • 数据落地时间:就是看数据存储到大数据系统的时间,跟该数据的业务时间的时间间隔,如果因为网络延迟或者接入程序问题,导致相差太远,对于实时性要求高的场景来说,是不可以接受的。

    那么加入这个检查,就可以提早发现数据延迟的原因,尽快解决问题。

  • 数据落地数量:对于一些定义并不十分合理的数据源(比如重复数据、数据分隔符界定不清晰等),可能在数据落地的时候,导致接入的数据量跟落地存储之后的数量不一致。

    通过这种检查机制,提前发现数据量不一致问题,力争把问题在第一时间内解决。


3. 数据计算的数据质量保障

数据源落地到大数据系统之后,紧接着就是对数据源,根据各种业务规则进行计算处理了。

在用计算引擎对数据计算的过程中,可以从下面几个方面来思考数据治理的保障问题:

  • 监控任务是否正常启动:一般任务分为常驻任务,和通过计划任务启动的定时任务,对于前者,监控其是否挂掉,而后者则监控其是否按时跑起来。

  • 监控任务运行时间:一般对于特定业务,单个任务(非常驻任务)的运行时间基本上围绕在一个确定的时间范围内,如果运行时间太长或者太短,则需要对其告警,说明要么是代码逻辑存在问题,要么就是数据本身有问题。

  • 监控任务状态:这里主要是监控运行失败的任务,一旦发现任务运行失败,需要将失败类型和失败原因,通过告警给发出来,是OOM还是空指针异常还是别的什么原因,第一时间通知运维人员介入。

  • 设置任务自动拉起机制:在一个大数据集群中,众多任务一起运行,难免存在各种偶发的任务失败情况,比如网络超时、突然的资源申请失败等,遇到这种情况,就可以通过监控脚本将其自动拉起,现实中能解决很多任务失败问题。


4. 结果存储的数据质量保障

数据通过上面的计算引擎计算后,就该存数据库保存了,对于结果存储的数据质量保障,可以从下面几个部分展开:

  • 检查数据结果的生成时间:对于很多重要报表数据来说,一般都有严苛的SLA,比如必须在某个时间点出数据,那么针对不同的报表数据,根据其要求不同,需要对其生成时间进行检查,对于有 Miss SLA 风险的报表,需要提前预警,提前干涉。

  • 检查每次报表生成的数据量:一般而言,对于特定业务,每次任务处理后的结果数据量,也是基本围绕在一个相对固定的值上下波动。

    比如报表A,每跑一次,生成的结果在1w条左右,每次上下波动的幅度不超过10%,那么你就可以设置告警阈值为9k-1.1w,超过该范围则告警。

  • 检查结果的数据质量:这个一般需要根据业务经验来判断,比如某个计算结果的值(如某网站的浏览量),为了确保其正确性,一般可以采用同比、环比的方式进行对比,并设置一个阈值范围,超出,则证明该结果可能不正确。

    还有就是一些特定字段的值,比如该值只可能出现A、B、C,但是你计算出来冒出个D,那也证明结果肯定不对。


最后

以上,是我对一个大数据系统,如何做数据质量保障的一点经验,算是对我经手过的诸多大数据项目,在数据治理方面的共性抽象。

希望可以对你有所帮助。


你可以添加我的私人微信,拉你入技术讨论群,跟一群热爱技术的小伙伴一起成长...


原文作者:安瑞哥是码农;如有侵权,请联系管理员删除。

上一篇: 我没有凡尔赛哈
请登录后发表评论 登录
全部评论

注册时间:2022-02-16

  • 博文量
    228
  • 访问量
    115457