Delta Lake
DataBricks公司推出的数据湖解决方案。
流批一体的Data Lake存储层,支持update/delete/merge
写入仅支持spark,支持dataframe的批和流写入,以及SQL的insert或insert overwrite
查询支持spark和presto
设计思路
提供流批一体的数据处理。
优点
(1)支持多种分析引擎
(2)支持较快的upsert/delete
(3)存储层廉价
(4)小文件管理compaction
(5)支持流批读写
(6)表格式演进
(7)ACID语义保证,多版本保证
(8)支持python接口
Iceberg
Netflix开源的用于跟踪超大规模表的新格式,专为对象存储(S3)而设计。
设计思路
iceberg提供高性能的分析和可靠的数据管理,完美地解耦了计算引擎和存储引擎,便于多样化计算引擎和文件格式,很好地完成了数据糊架构中Table Format这一层的实现,因此更容易成为Table Format层的开源事实标准。核心抽象对接新的计算引擎的成本比较低,并且提供先进的查询优化功能和完全的 schema 变更。
iceberg也朝着流批一体的数据存储层发展,manifest和snapshot的设计,有效地隔离不同transaction的变更,非常方便批处理和增量计算。
优点
(1)Meta管理可扩展
(2)通用的ACID
(3)抽象性极佳且通用
(4)Meta性能佳,非partition字段可高效过滤,文件级别统计信息用于过滤
(5)减少FS API语义依赖,可扩展到S3
(6)iceberg项目背后的社区资源非常丰富。国外的Netflix、Apple、Linkedin、Adobe等公司都有PB级别的生产数据运行在iceberg上。
Hudi
提供fast upsert/delete和compaction功能,支持Upserts、Deletes和Incremental数据处理,支持三种数据写入方式:Upsert、Insert和Bulk_Insert
设计思路
Hudi设计初衷是为了incremental的upsert,更注重于高效率的 Upsert 和近实时更新,提供了 Merge On Read 文件格式,以及便于搭建增量 ETL管道的增量查询功能。
优点
(1)支持增量拉取
(2)严格Table Schema
(3)优秀的可拓展性
(4)支持多种分析引擎
(5)支持快速upsert/delete
功能对比
如下图所示: