面对今日头条、抖音等不同产品线的复杂数据质量场景,火山引擎DataLeap数据质量平台如何满足多样的需求?本文将介绍我们在弥合大数据场景下数据质量校验与计算消耗资源大、校验计算时间长的冲突等方面的经验。
广义上来说,数据质量的定义是数据满足一组固有特性(质量维度)要求的程度。业界通常有 6 个维度:完整性、准确性、一致性、及时性、规范性、唯一性。这方面火山引擎DataLeap研发人员对数据质量有一些流程和规范,并针对上述一些维度开发了一套数据质量平台,主要关注数据质量及其生产链路。
上图展示了在数据开发的流程中,火山引擎DataLeap数据质量平台可以提供哪些功能:
•数据探查:可以根据各种维度来查看数据明细和分布情况。
•数据对比:开发同学可能经常会发现线上表和测试表不一致,所以我们在任务上线的环节提供了数据对比的功能。
•任务监控:监控线上数据,提供报警和熔断功能。
火山引擎DataLeap数据质量平台最有代表性的功能是:对数据开发平台产出的 Hive 表数据进行主键重复检测,如果存在重复则进行报警。
火山引擎DataLeap数据质量监控最有用的场景是防止数据问题蔓延到下游。举个例子:数据任务产出一张 Hive 表,该表可能会同步一些信息到 Hive metastore(HMS)。HMS 的主从架构可能存在一定的延迟,假设 HMS 出现问题,下游任务可能会读到脏数据,这时如果我们使用数据质量监控,就能及时发现问题,阻止下游任务运行。
火山引擎DataLeap流批数据质量解决方案有 4 个大的功能:
•离线数据质量监控:解决批和微批监控场景,支持 Hive、ClickHouse、ES 等多种数据源,并有字段、唯一性等多种监控维度,允许通过 SQL 自定义维度聚合进行监控。
•流式数据质量监控:解决流式监控场景,支持 Kafka/BMQ 等数据源。
•数据探查:解决数据开发之前对数据内容存疑问题,支持 Hive 数据源。
•数据对比:解决新旧表数据一致性问题,支持 Hive/Hive SQL 数据源。
本文介绍了火山引擎DataLeap数据质量平台的实现,最后谈谈平台未来的演进方向。
•底层引擎统一,流批一体:我们看到 Flink 目前的 presto 能力和 Flinkbatch 的能力也在不断发展,因此我们后续会尝试切一些任务,做到真正意义上的统一引擎。
•智能:引入算法进行数据驱动。考虑引入 ML 方法辅助阈值选取或者智能报警,根据数据等级自动推荐质量规则。
•便捷:OLAP 对性能提升比较显著,后续可以将 OLAP 引擎应用于质量检测、数据据探查、数据对比应用与数据开发流程。
•优化:比如通过单一 Job,同时运行多个监控,将监控和数据探查结合。
本文介绍的数据质量监控的能力目前大部分已通过火山引擎DataLeap对外提供服务。