引言
新加坡的数字服务平台 Grab 在其内部的 Coban 平台中新增了数据质量监控功能。这一改进旨在提升通过 Apache Kafka 传输给下游消费者的数据质量。根据 Grab 工程团队的博客文章,过去在监控 Kafka 流数据处理时,缺乏有效的数据质量验证解决方案,这导致难以识别坏数据、及时通知用户,并防止对下游用户产生的连锁影响进一步升级。
数据质量问题的类型
Grab 遇到的数据错误主要分为两种类型:
- 语法错误:由消息结构错误引起。例如,生产者可能为模式中定义为整型的字段发送字符串值,这会导致消费者应用程序在反序列化时崩溃。
- 语义错误:当消息中的数据值结构不良或超出可接受范围时出现。例如,一个
user_id字段可能是有效的字符串(语法正确),但如果它不符合公司预期的 “usr-{8位数字}” 格式,则违反了语义规则。
解决方案与系统架构
为了解决这些问题,Grab 的工程团队实施了一种支持数据合约定义、自动化测试和数据质量警报的新架构。该系统的核心是一个测试配置和转换引擎。
这个引擎以主题数据模式、元数据和测试规则作为输入,创建一组基于 FlinkSQL 的测试定义。随后,一个 Flink 作业会执行这些测试,从生产环境的 Kafka 主题消费消息,并将任何错误转发到 Grab 的可观测性平台。团队选择 FlinkSQL 是因为其将流数据表示为动态表的能力,使得团队能够自动为可以高效实现的规则生成数据过滤器。
为了简化可能涉及数百个字段特定规则的繁琐定义过程,该平台利用大型语言模型(LLM) 来分析 Kafka 流模式和匿名的样本数据,并推荐潜在的语义测试规则。这一功能极大地加速了设置过程,并帮助用户识别那些非显而易见的数据质量约束。
实施效果与行业背景
该系统已于今年早些时候部署,目前主动监控着超过 100 个关键 Kafka 主题的数据质量。团队报告称:“该解决方案提供了立即识别并阻止无效数据在多个流中传播的能力……这加速了诊断和解决问题的过程,使用户能够迅速应对生产数据挑战。”
Grab 的这种做法符合行业最佳实践,但此类实践目前仍属少见。根据 Confluent 最近的 《2025年数据流报告》 ,估计仅有 1% 的公司达到了最高成熟度水平,即“数据流作为战略推动因素,并且流被作为产品进行管理”。通过实施基于合约的主动数据质量监控,Grab 正将其数据流视为面向内部用户的可靠产品。
Grab 的平台增强是为数据管道增加可观测性这一更广泛行业趋势的一部分,这一领域正见证着新兴初创公司的活跃以及对实时数据质量指标的学术研究。