数据湖和数仓融合架构是当下大数据领域非常重要的议题之一,不仅各大云厂商先后提出了自己的技术方案,开源社区也有一些项目(包括 DeltaLake、Iceberg 和 Hudi)非常活跃。
我们得明确仓与湖的主要区别。仓里的数据,有明确的表、字段定义,表与表之间的关系清晰。湖里的数据,样式就多了,有结构化、半结构化(JSON、XML 等)、非结构化(图片、视频、音乐)。 数据入仓,我们要预先定义好 schema。 数据入湖,则没有这样的要求,只需要将原始数据写入指定存储即可(通常是对象存储),当真正需要使用的时候,我们再设法定义 schema,进行分析应用。显然,数据入湖比入仓要方便快捷。
云厂商的数据湖产品,通常积极推广他们的低成本云存储(S3、OSS 等),吸引用户将数据上云。一旦数据上云,进而吸引用户使用他们多年完善的大数据体系产品(计算引擎、依赖调度、质量管理、血缘管理、数据治理等),为用户提供数据开发、分析、应用的附加服务。其次,很多企业出于数据安全的考虑,并不愿意将自己的数据上云,一套兼容各类存储的仓湖融合方案,是云厂商对市场的迎合。
开源的几个数据产品 Delta Lake、Apache Ice