Grammarly 采用 Medallion 架构进行数据迁移
Grammarly 在从内部数据湖迁移到 Delta Lake 湖仓时,采用了 Medallion 架构。这一迁移过程显著提升了数据质量,并将数据交付时间减少了 94%。
背景与挑战
Grammarly 自 2015 年起使用名为 Gnar 的自定义数据湖解决方案。然而,随着业务增长,Gnar 逐渐面临可扩展性瓶颈,难以支持新功能的实现。因此,Grammarly 决定采用 Databricks 平台作为新的数据平台,该平台包括 Apache Spark(数据处理)、Delta Lake(存储)和 Unity Catalog(数据治理)。
Medallion 架构的应用
Medallion 架构,也称为“多跳”架构,通过创建三个不同的层次来逻辑化组织湖仓中的数据,逐步提升数据质量和结构:
- Bronze 层:存储从外部系统获取的原始数据,提供历史数据存档,支持数据溯源、审计和重新处理。
- Silver 层:存储从 Bronze 层清洗和规范化的数据,以及公司的参考数据,提供企业级数据视图,支持自助式的临时报告、分析和机器学习。
- Gold 层:组织为项目特定的数据库,采用读取优化的数据模型,用于支持客户、产品、库存、销售分析等,或特定的机器学习/人工智能应用。
技术挑战与解决方案
Grammarly 的旧平台缺乏模式强制,所有数据存储在单一表结构中,并按事件名称和时间分区。迁移到 Delta Lake 后,团队需要解决模式管理的挑战,包括基于 MySQL 中存储的推断模式制定目标模式,并处理模式不兼容问题。
此外,每种事件类型需要存储在专用表中,因此团队创建了 Spark Structured Streaming 作业,将事件路由到目标表。历史数据的回填也采用了类似的方法,但需要解决数据质量和处理可扩展性问题,这一过程需要迭代和紧密协作。
项目经验总结
Grammarly 技术负责人 Christian Acuna 总结了项目中的经验教训,强调了早期模式管理的重要性,以提高数据可靠性和降低成本。尽管旧系统支持快速实验和客户易用性,但在扩展性和维护成本方面存在显著问题。
通过采用 Medallion 架构和 Databricks 平台,Grammarly 成功实现了数据平台的现代化,显著提升了数据质量和处理效率。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。