在业界的数据湖方案中有 Hudi、Iceberg 和 Delta 三个关键组件可供选择。
一、Iceberg 是什么?
Iceberg 官网中是这样定义的:
Apache Iceberg is an open table format for huge analytic datasets
即 Iceberg 是大型分析型数据集上的一个开放式表格式。通过该表格式,将下层的存储介质(HDFS、S3、OSS等)、文件格式(Parquet、Avro、ORC等)与上层计算引擎(Flink、Spark、Presto、Hive等)进行解耦,如下图所示。

计算与存储的解耦给我们带来了更多的灵活性,在计算引擎上有了更多的选择,可以根据实际的需求选择不同的计算引擎。通过表格式屏蔽了下层的存储细节,对上层引擎呈现的都只是一张 Iceberg 表。
二、Iceberg 的文件组织形式
为了便于理解 Iceberg 的几个重要的特性,我们先简单介绍下 Iceberg 的文件的组织形式。
如下图所示,Iceberg 文件组织分为四层,分别为Metadata、Snapshot、Manifest、File。
- Metadata 文件:该文件记录了最新的快照信息和历史的快照记录。并且记录了最新的 Schema 信息。
- Snapshot 文件(图中Snap-x):由于 Iceberg 基于 MVCC(多版本并发控制) 的设计理念,每次 Commit 都会生成一个 Snapshot, 该 Snapshot 是当时表的全局快照,即选定某个快照读取时,读到的是全量数据。Snapshot 文件记录了历史的 Manifes

Apache Iceberg是一种开放式表格式,用于大规模分析数据集,提供ACID事务性和Schema演化功能。它解耦了计算与存储,支持多种计算引擎和存储介质。Iceberg的文件组织包括Metadata、Snapshot、Manifest和File,确保数据一致性。其特色包括行级更新、隐藏分区、时间旅行和快照,允许灵活的分区调整和历史数据查询。此外,Iceberg的强Schema约束避免了数据不匹配问题,增强了数据管理的灵活性和查询性能。
最低0.47元/天 解锁文章
7591

被折叠的 条评论
为什么被折叠?



