网易严选离线数仓质量建设实践

过往记忆 过往记忆     2022-11-30     492

关键词:

做数仓最重要的是什么?一是模型易用性,二是数据质量。模型易用性我们可以通过建模规范、指标管理等方式去实现。而对于数据质量呢?本篇将以严选数仓为例,从建设目标、保障措施、效果评价等几方面探讨数仓质量建设。

1

‍保障等级确认‍

网易严选离线数仓目前主要基于有数大数据平台进行调度及管理(Azkban),FLOW数量4000+,首先我们要做的事情就是从中识别出每个任务的重要程度,以此确定保障的策略。

具体做法是:基于CMDB的服务分级确定终端场景的重要性,再通过数据血缘上推依赖的FLOW,如果一个FLOW被多个服务依赖则取较高的服务等级作为该FLOW的分级。

2

数据质量建设目标

这个就比较老生常谈了:完整性、准确性、一致性、及时性。

完整性

数据完整性包含两方面:记录完整性、字段信息完整性。即某张表数据记录是否缺失,某些非null字段是否为null。

准确性

准确性指数据是否存在异常或者错误的信息,如明细数据相对原始数据是否失真,汇总数据是否符合指标口径定义等。

一致性

对于企业数据仓库,一份数据在多个场景使用是很常见的,一致性即指对于同一个数据定义,可以是一个原始字段或一个加工后的指标,任意使用场景所使用的数据都是一样的。比如供应链和商品开发都关注缺货率指标,他们可能分属不同团队,对接不同的数据开发,但是用到的缺货率指标只能是同一份。

及时性

及时性指业务需要看数时,要有数可看,具体落实下来就是数仓的FLOW要能稳定按时产出。

3

数据质量实施策略

针对前面提到的建设目标,目前主要有以下策略。

3.1 数据源质量控制

要做好数据质量首先我们要保证数据源是“干净”的,且数据开发要能及时感知到上游系统的各种变更。这里主要有以下3点策略:

  1. ODS层入仓监控。严选数据入仓使用自研Datahub平台,在数据入仓阶段对binlog收集、日志收集、T+1快照生成等任务做了时效监控,保障源数据的及时性。

  2. 上游变更感知。数仓的数据来自于上游业务系统,上游系统的逻辑变更必然对数仓造成影响。考虑到如果直接做发布审批卡点,流程会比较重,目前我们的做法是由数据开发自行跟对接的上游开发强调,有变更时需要把变更点告知数据开发,由数据开发评估影响。

  3. 上游DB运维感知。这层更接近于是兜底逻辑,理论上变更及运维操作都应该在发生前同步到数据开发。严选CMDB支持对服务配置“数据负责人”角色,当业务后端对服务相应的DB发起DDL或者DML工单时,变更详情会通过邮件及POPO同步到数据开发。

3.2 ETL质量控制

ETL质量控制这里指数据开发的在有数大数据平台开发FLOW构建数仓主题域模型的过程的质量控制措施和能力。

  1. 任务测试卡点。这里主要指有数大数据平台FLOW未在开发环境运行通过的,无法提交上线。同时开发环境提供测试集群,依模型重要性可以选择在测试集群进行调试,从而不影响线上数据。

  2. 任务发布卡点。有数大数据平台支持按规则圈选任务,对于选定的任务要求先审批后上线。借助这个能力可以实现对日常重点任务或者全局封板的发布卡点,要求CR和测试报告才能审批上线。(该机制目前暂未运行)

  3. 表质量监控卡点。主要基于有数大数据平台的数据稽核能力,以任务分级为基础,围绕完整性、准确性、一致性对可能的数据质量问题做出监控卡点。目前已提“支持DQC结果订阅”的需求给到有数。

  4. SQLSCAN静态分析。代码静态分析这块调研了SonarQube的方案,在开源方案的基础上需要解决3个问题。(1)代码集成,可借助严选自己的“血缘插件”收集的执行记录实现。(2)代码检查规则,这块需要自行开发插件,SQL相关的检查插件目前开源的方案都是针对OLTP场景的。因暂时没开发资源能投入这块,所以暂无实施计划。

  5. 产出基线控制。以任务分级为基础,将重点数仓任务划分到2:30、4:30、5:30、7:30、9:30五条基线上,基线DDL30分钟前未产出即开始预警,由值班介入处理,保障及时性。

3.3 终端质量控制(出口控制)

终端质量控制目前主要针对数据产品,QA参与建设的“指标测试平台”提供了对指标产出及时性、指标波动、不合理数值、null值等的预警能力,且由QA直接跟进异常处理。

3.4 横向巡检预警及复盘

前文提到的数据源质量控制、ETL质量控制、终端质量控制更多是分散到各个数据开发及各个任务的by case处理,除此之外我们还建设了横向的巡检及复盘机制。

事前异常变更巡检。每天下班前抓取当天的数仓变更点,进行以下筛查并通知到部门群里。

(1)检查基线任务当天有修改的记录

  • 检查有DDL变更却没有关联任务变更记录;

  • 事后打标分析。每天早上抓取近期基线破线记录,通知值班填报标记破线原因,用于事后复盘及破线责任归因。

(2)稽核质量巡检。因为弱稽核失败不阻塞任务,可能负责人没有及时处理,针对连续失败未处理的任务进行抓取并通知到部门群里。

(3)次日基线预警。如果当日的任务修改可能导致第二天的基线破线,则也定位到具体的可疑任务并通知到群里。

(4)质量惩罚措施。针对有明显违反质量规范的行为执行“罚一天值班”的惩罚,比如表稽核连续失败3天及以上未处理。

可以看到这部分涉及了很多需要通知到人/通知到群的场景,那以一个数据开发的角色,我们怎么低成本地实现这一机制呢?

巡检这块一开始建设的时候做的比较简单粗暴,直接用Python脚本获取需要的基础数据,进行处理后对接飞书open api,借助飞书机器人把需要的消息通知出来。Python脚本丢服务器上用crontab调度。

场景比较少时这么做没什么问题,但是场景一多显然会导致总开发成本比较高且脚本管理混乱。这里一开始考虑的方案是把分散的巡检脚本工程化整合重构一下,规范下开发及部署流程。但其实还是比较重,最终想到一种比较巧妙的方案,通过Hive/Spark的UDF对严选消息中心的接口做一层包装,这样简单写几行SQL就能发送消息通知,且调度可以直接在有数大数据平台上完成,大大降低了巡检消息的开发成本。

效果大概长这样:

4

质量衡量

前面提到这么多措施,具体实施得怎么样,效果又怎么样呢?这里是数仓的传统技能了,收集各类元数据,计算DQC配置率,基线破线率等指标,并通过有数报表进行呈现。一方面直观呈现数仓现在的质量情况;另一方面指标拆解到个人,配合消息通知工具发送待办作为推进改进的抓手。

5

未来展望

关于数仓质量这块可能继续建设的方向包括以下几块:

  • DQC结果订阅机制,这个需求已经提给了有数;

  • SQLSCAN静态分析,当前主要由于开发资源问题搁置,合适的时机可以重启;

  • 基线治理深化,通过优化单任务性能,任务拓扑,风险提早发现等方式继续降低基线破线率和起夜率;

  • 红蓝攻防演练,针对重点链路、重点场景开展质量攻防演练,检验风险发现能力、事故恢复能力、数据吞吐能力等。

作者简介

冯楚,网易严选资深数据开发工程师,主要负责供应链数据建模及离线数仓质量治理相关工作。

网易严选离线数仓质量建设实践

...效果评价等几方面探讨数仓质量建设。1‍.保障等级确认网易严选离线数仓目前主要基于有数大数据平台进行调度及管理(Azkban),FLOW数量4000+,首先我们要做的事情就是从中识别出每个任务的重要程度,... 查看详情

网易严选离线数仓治理实践

...几块入手对现有数据资产进行的一些治理的思路和方案。网易严选是个自营品牌电商,这意味着严选的业务会覆盖C端的用户营销,商品到B端的供应链以及财务业务。业务和数据的整体复杂度会相对较高,各个不同业... 查看详情

美团外卖离线数仓建设实践

...告、算法等各个团队的数据需求。本文主要介绍美团外卖离线数仓的历史发展历程,在发展过程中碰到的痛点问题,以及针对痛点做的一系列优化解决方案。1.业务介绍首先介绍下美团外卖的业务场景,核心交易链路... 查看详情

美团数据平台及数仓建设实践,超十万字总结

...章,并且质量非常高的文章给整理了下来,按照离线数 查看详情

美团数据平台及数仓建设实践,超十万字总结

...章,并且质量非常高的文章给整理了下来,按照离线数 查看详情

网易严选dmp标签系统建设实践

...地生成用户画像,提升用户体验。今天分享的主题是网易严选DMP标签系统建设实践,主要围绕下面五点展开&#x 查看详情

实时数仓在有赞的实践(代码片段)

...要求越来越迫切,需要实时数仓的能力来赋能。传统离线数仓的数据时效 查看详情

网易严选数据质量实践(代码片段)

图片1.数据质量问题的危害和发生原因1.1数据质量问题的危害数据质量问题的危害通常体现在四个方面:数据的完整性、数据延迟、数据准确性、数据一致性:数据完整性:犹记得2018年杭研和考拉一起共建数据中台&#x... 查看详情

实时数据仓库的演进

数据处理现状:当前基于Hive的离线数据仓库已经非常成熟,数据中台体系也基本上是围绕离线数仓进行建设。但是随着实时计算引擎的不断发展以及业务对于实时报表的产出需求不断膨胀,业界最近几年就一直聚焦... 查看详情

实时数仓系列-网易云音乐基于flink+kafka的实时数仓建设实践

简介:本文由网易云音乐实时计算平台研发工程师岳猛分享,主要从以下四个部分将为大家介绍Flink+Kafka在网易云音乐的应用实战:背景Flink+Kafka平台化设计Kafka在实时数仓中的应用问题&改进直播回放:https://developer.aliyun.com/li... 查看详情

实时数仓与离线数仓架构对比flink消费流程

实时数仓架构图:离线数仓:与离线数仓区别:MySQL业务数据采集改用FlinkCDC;FlinkCDC与Maxwell处理方式和Cannal一样通过监控binlog方式(行级别),而Sqoop是通过MR方式处理数据,这种方式太慢日志数据,... 查看详情

数仓埋点体系与归因实践(代码片段)

...数据应用5.未来展望导读:当今是流量为王时代,严选作为电商,流量建设就显得尤为重要。流量数据建设比业务数据困难,因为其数据源本身是一 查看详情

数仓埋点体系与归因实践(代码片段)

...数据应用5.未来展望导读:当今是流量为王时代,严选作为电商,流量建设就显得尤为重要。流量数据建设比业务数据困难,因为其数据源本身是一 查看详情

网易严选如何打造数仓规范和评价体系

数据为王的时代,数据量从最初的几十G,慢慢沉淀到几十T,甚至几十PB的量。数据工程师,也从最初的ETL工程师慢慢成长为数据全栈工程师:采集、同步、模型、离线、实时、规范、平台、工具、产品、交互... 查看详情

数仓系列第11篇:实时数仓

...方法论4.数据仓库架构的演变5.实时数仓案例6.实时数仓与离线数仓的对比导读:本文将从数据仓库的简介、经历了怎样的发展、如何建设、架构演变、应用案例以及实时数仓与离线数仓的对比六个方面全面分享关于数仓的详... 查看详情

云原生离线实时一体化数仓建设与实践

简介:本篇内容分享了云原生离线实时一体化数仓建设与实践。分享人:刘一鸣Hologres产品经理视频链接:数据智能实战营-北京站专题回顾正文:本篇内容将通过五个部分来介绍云原生离线实时一体化数仓建设与... 查看详情

美团基于flink的实时数仓平台建设新进展

...。2019年,我们注意到实时计算的主要应用场景是解决离线数仓时效性低的问题。离线数仓已经比较成熟,通过SQL方式开发很简单,而数仓的实 查看详情

离线数仓(代码片段)

第1章Azkaban概论1.1为什么需要工作流调度系统  1)一个完整的数据分析系统通常都是由大量任务单元组成:    Shell脚本程序,Java程序,MapReduce程序、Hive脚本等  2)各任务单元之间存在时间先后及前后依赖关系  3)... 查看详情