apache

apache/iceberg

Java
53
2026-01-31
8.5k
+120
#18
3k

项目简介

Apache Iceberg数据表格式

Apache Iceberg

智能解读

智能解读 自动生成

Apache Iceberg 是一种专为海量分析型数据表设计的高性能开源表格式。它将传统数据库的可靠性与易用性带入了大数据领域,核心价值在于解决了数据湖中常见的可靠性、一致性和性能问题。通过定义清晰的表结构、元数据管理和数据组织方式,Iceberg 支持多种计算引擎(如 Spark、Trino、Flink、Hive、Presto)在不相互干扰的情况下,并发、安全地读写同一份数据。其格式规范稳定,并持续演进,适用于构建现代化数据湖架构,实现高效的即席查询、增量数据处理和表版本时间旅行等高级特性。

智能标签

使用场景

使用场景 自动生成

最适合需要多引擎并发访问、强数据一致性、高效元数据管理和灵活模式演进的大型数据湖场景。

1

多引擎并发读写

在数据湖中,Spark、Flink、Presto等多个计算引擎需要同时读写同一张表,但传统格式(如Hive表)容易导致数据不一致和并发冲突。

使用Iceberg的ACID事务特性,确保多个引擎可以安全地并发读写同一张表,避免数据损坏和读取脏数据。

Spark ETL任务在写入数据的同时,Presto用户可以实时查询已提交的数据分区,Flink流任务可以追加新数据,三者互不干扰。

2

数据版本回溯

数据工程师误删或误改了重要数据,需要快速恢复到之前的某个时间点状态,但传统数据格式难以实现精确的时间旅行查询。

利用Iceberg的Snapshot机制,通过时间戳或Snapshot ID直接查询历史版本数据,或回滚到指定版本。

发现今天上午10点运行的ETL任务写入了错误数据,可以立即执行 `SELECT * FROM table FOR TIME AS OF '2024-01-01 09:30:00'` 查询正确数据,或回滚到该时间点的快照。

3

高效元数据管理

海量分区表的元数据(如Hive Metastore中的分区信息)膨胀严重,导致列出分区、添加分区等操作极其缓慢。

Iceberg将元数据存储为文件而非数据库条目,并利用多级索引和清单文件,使元数据操作与数据量解耦,大幅提升性能。

一张包含数千万个分区的表,在Iceberg上执行 `SELECT DISTINCT date FROM table` 或添加新分区,速度比传统Hive表快几个数量级。

4

模式演进无痛

业务需求变化需要为已有表添加新列、重命名列或修改列类型,但传统Parquet/ORC格式的模式演进操作复杂且容易出错。

Iceberg支持完整的模式演进(添加、删除、重命名、类型提升),且向后兼容,无需重写数据文件。

为订单表添加一个 `coupon_info`(优惠券信息)列,只需执行 `ALTER TABLE orders ADD COLUMN coupon_info STRING`,现有查询和作业继续正常运行。

项目健康度

58
C 一般

综合活跃度、人气、增长、社区、文档评估

活跃度
2/25
人气
25/25
增长
10/20
社区
9/15
文档
12/15
在 GitHub 上查看

项目信息

作者 apache
来源 GitHub
周期 每月
仓库 ID apache/iceberg
首次采集 2026-02-01 10:04:09
最后更新 2026-02-23 13:29:14

赞赏支持

如果本站对你有帮助,欢迎打赏支持

微信打赏码

微信

支付宝打赏码

支付宝

评论 0

登录 后发表评论

加载评论中...

助手