广义上来说,数据质量的定义是数据满足一组固有特性(质量维度)要求的程度。业界通常有 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对外提供服务。