飞熊出品 · Apache Iceberg 调研:9K stars 数据湖事实标准,6 大特性让湖仓一体落地

57次阅读
飞熊出品 · Apache Iceberg 调研:9K stars 数据湖事实标准,6 大特性让湖仓一体落地

副标题 :从 Apache 顶级项目治理 · 到 Spark/Trino/Flink 跨引擎共享同一张表 · 数据湖三剑客之首
赛道 :数据湖 · 全景图 v2 决策 5 补足(338 已标 ” 湖仓论 ” 但缺具体选型)
作者 :yunying(增长运营官)
时间:2026-08-19


一、引子:338 全景图决策 5 那张没填的勾

8/16 发的《2026 BI 栈全景图》?p=338》决策 5 写了 ”Doris / StarRocks 也跟进湖仓集成 ”,但 没有具体讲 ” 湖 ” 那一层用谁 。8/19 v2 补丁加了 ” 湖仓一体 ” 趋势,但“ 用 Iceberg / Delta Lake / Hudi 哪个 ” 还是没答。

本文补足:Apache Iceberg —— 数据湖事实标准

二、它解决什么问题(30 秒版)

传统的 Hive 表格式(Parquet/ORC + Hive Metastore)有 4 个老问题:
1.
不支持事务(删一行再查可能还在)
2.
Schema 变就要重写全部数据

3.
分区分错就全表扫描

4.
多引擎(Spark/Trino/Flink)不能同时写同一张表

Iceberg = 解决这 4 个问题 。它不是文件格式(仍是 Parquet/ORC),而是 表格式(Table Format)——把表结构、事务、版本、分区都做在 Iceberg 这一层,下面接任意文件 / 引擎。

实时数据(2026-08-19 拉取)

维度 数值
Stars 9,150
Forks 3,454
Open Issues 908
License Apache-2.0
最新版本 1.11.0(2026-05-20)
最后 push 2026-08-19 08:31 UTC(今天!)
创建时间 2018-11-19(7 年)
治理 Apache 顶级项目(2024-05 升级)
Topics apache / hacktoberfest / iceberg
归属 Apache Software Foundation
官网 iceberg.apache.org

关键判断 :Iceberg 是数据湖三剑客中 最成熟 的——Apache 顶级 + 7 年沉淀 + 2026-08-19 还在 push。Delta Lake 是 Databricks 商业主导,Hudi 是 Uber 起源但社区分散。

三、6 大核心特性

1. Expressive SQL(事务 + MERGE INTO)

-- 增量合并新数据
MERGE INTO prod.nyc.taxis pt
USING (SELECT * FROM staging.nyc.taxis) st
ON pt.id = st.id
WHEN NOT MATCHED THEN INSERT *;

-- 事务原子性(ACID)-- A 引擎写的,B 引擎立刻可见,零延迟

实战价值:替代 Hive 的 INSERT OVERWRITE 老大难,全量改增量。

2. Full Schema Evolution(无重写)

ALTER TABLE taxis ALTER COLUMN trip_distance TYPE double;
ALTER TABLE taxis ALTER COLUMN trip_distance AFTER fare;
ALTER TABLE taxis RENAME COLUMN trip_distance TO distance;

实战价值 :加字段 / 改字段顺序 / 重命名 —— 不用重写任何数据。Hive 时代改个字段要 rebuild 整张表。

3. Hidden Partitioning(自动分区)

-- 写入:Iceberg 自动按月分区,路径 + 文件命名全自动
INSERT INTO prod.nyc.taxis VALUES (...);

-- 查询:不用写分区过滤
SELECT count(*) FROM prod.nyc.taxis WHERE ts >= '2025-08-01';
-- Iceberg 自动跳过 8 月之前的分区

实战价值:告别 ” 忘记 WHERE 分区就全表扫描 ”——schema 把分区关系写死,查询自动剪枝。

4. Time Travel + Rollback(时间旅行)

-- 查历史快照
SELECT count(*) FROM nyc.taxis 
FOR VERSION AS OF 2188465307835585443;
-- 输出: 2,798,371

-- 查历史时间点
SELECT count(*) FROM nyc.taxis 
FOR TIMESTAMP AS OF TIMESTAMP '2022-01-01 00:00:00';
-- 输出: 2,798,371

-- 一键回滚
CALL system.rollback_to_snapshot('nyc.taxis', 2188465307835585443);

实战价值 :误删数据?上个月的报表要复现?重跑 ETL? 全支持

5. Data Compaction(自动文件合并)

-- Iceberg 表默认小文件(low cardinality)-- 一键合并 + 排序
CALL system.rewrite_data_files(
  table => 'nyc.taxis',
  strategy => 'sort',
  sort_order => 'zorder(date, vendor_id)'
);

实战价值 :代替 Hive 的 ALTER TABLE ... CONCATENATE 查询加速 10×

6. Multi-Engine(多引擎安全共享)

这是 Iceberg 最杀手锏的特性

┌──────────────────────────────────────────────────────────┐
│ 同一个 Iceberg 表,多引擎同时读写                          │
│                                                            │
│  Spark 写入 → Iceberg 快照版本 +5                          │
│  Trino 写入 → Iceberg 快照版本 +6                          │
│  Flink 写入 → Iceberg 快照版本 +7                          │
│  Hive 读取 → 看到最新版本(快照 7)│
│  Impala 读取 → 看到最新版本(快照 7)│
│                                                            │
│ 全部 ACID 隔离,互不干扰                                    │
└──────────────────────────────────────────────────────────┘

实战价值:客户问 ” 我们用 Spark 写,Trino 读能不能用?” —— Iceberg 是唯一答案。Hive 不行,Parquet 也不行。

四、集成矩阵(跟已发赛道怎么连)

引擎 集成现状 相关文章
Apache Spark ✅ 官方一等公民 Doris 296 / StarRocks 332 都覆盖
Apache Flink ✅ 流批一体 见 [Apache Flink 调研 P4 即将发布]
Trino / Presto ✅ 官方一等公民 Trino 328
Apache Hive ✅ 兼容(不用改代码) 历史方案
Impala ✅ 兼容 历史方案
Doris / StarRocks / ClickHouse ✅ 原生 Iceberg Catalog Doris 296 / StarRocks 332 / ClickHouse 322
Snowflake / BigQuery / Databricks ✅ 全支持 商业化覆盖
AWS Athena / Redshift ✅ SageMaker Lakehouse 商业化覆盖

五、数据湖三剑客对比(Iceberg vs Delta Lake vs Hudi)

维度 Apache Iceberg Delta Lake (Linux Foundation) Apache Hudi
Stars 9,150 8,200 (delta-io/delta) 6,200 (apache/hudi)
License Apache-2.0 ✅ Apache-2.0 ✅ Apache-2.0 ✅
起源 Netflix(2018) Databricks(2019) Uber(2017)
治理 Apache 顶级 Linux Foundation Apache 顶级 ✅
社区 7 OSS 厂商主导 Databricks 主导 Uber 主导但分散
多引擎 ✅ 6 引擎都支持 ✅ 5 引擎(PG/Redshift 弱) ⚠️ 4 引擎
流处理 ✅ Flink 集成 ❌ 弱(Spark Structured Streaming) ✅ 原生
生态成熟度 7 年 6 年 8 年
选型建议 跨引擎首选 Databricks 生态首选 流式更新高频场景

选谁?

场景 推荐
多引擎协作(Spark/Trino/Flink) Iceberg
Databricks 全栈 Delta Lake
高频 CDC / 实时入湖 Hudi
OSS 治理 + 跨云 Iceberg
国内客户(信创 + 国产引擎) Iceberg ⭐(Doris/StarRocks 原生支持)

六、实战 3 步 · 35 分钟跑通 ” 湖仓一体 ”

Step 1 · Docker Compose 一键起 3 组件(10 分钟)

version: '3.8'
services:
  # MinIO(S3 兼容存储)minio:
    image: minio/minio:latest
    command: server /data --console-address ":9001"
    environment:
      MINIO_ROOT_USER: minio
      MINIO_ROOT_PASSWORD: minio123
    ports:
      - "9000:9000"
      - "9001:9001"

  # Iceberg REST Catalog(官方)iceberg-rest:
    image: apache/iceberg-rest-fixture:latest
    environment:
      CATALOG_WAREHOUSE: s3://iceberg/warehouse
      CATALOG_IO__IMPL: org.apache.iceberg.aws.s3.S3FileIO
    ports:
      - "8181:8181"

  # Spark + Iceberg
  spark:
    image: tabulario/spark-iceberg:latest
    environment:
      AWS_ACCESS_KEY_ID: minio
      AWS_SECRET_ACCESS_KEY: minio123
      AWS_REGION: us-east-1
    ports:
      - "8888:8888"  # Jupyter
      - "8080:8080"  # Spark UI

Step 2 · Spark 创建 Iceberg 表 + 插入数据(15 分钟)

# Jupyter / pyspark
spark.sql("""
  CREATE TABLE prod.nyc.taxis (
    id BIGINT,
    trip_distance DOUBLE,
    fare DOUBLE,
    vendor_id INT,
    ts TIMESTAMP
  ) USING iceberg
  PARTITIONED BY (days(ts))
""")

# 5 字段 + 自动按天分区
# 下次 "ALTER TABLE ADD COLUMN" 不重写数据

spark.sql("""
  INSERT INTO prod.nyc.taxis VALUES
  (1, 2.3, 12.5, 1, TIMESTAMP '2025-08-19 10:00:00'),
  (2, 0.5, 5.5,  2, TIMESTAMP '2025-08-19 11:30:00')
""")

Step 3 · Trino 同时查询(5 分钟)

-- Trino CLI 或 JDBC
SELECT count(*) FROM iceberg.prod.nyc.taxis;
-- 直接看到 Spark 刚写的 2 行

-- 时间旅行
SELECT count(*) FROM iceberg.prod.nyc.taxis
FOR TIMESTAMP AS OF TIMESTAMP '2025-08-19 09:00:00';

35 分钟跑通的成果:Spark 写 + Trino 读 + Iceberg 治理 = 跨引擎数据湖。

七、风险与坑

# 风险 应对
1 小文件问题(高频写入产生大量小文件) 定期 CALL system.rewrite_data_files()
2 Partition Evolution 复杂 8/19 还在演进(Iceberg 1.11+ 改进)
3 Java 写、JVM 生态 Python 集成需 PyIceberg(独立库)
4 908 open issues 量大 Apache 顶级项目 + 活跃社区,问题通常有 workaround
5 学习曲线 团队 1-2 周熟悉,重点掌握 hidden partition + time travel
6 跟 Hive 迁移路径 增量迁移工具成熟(iceberg-migration

八、总结

3 个最值得用的理由

  1. Apache 顶级 + 7 年沉淀——数据湖三剑客中治理最规范
  2. 多引擎协作唯一解——Spark/Trino/Flink/Hive/Impala 全支持,告别 ” 格式分裂 ”
  3. 2026 主流湖仓——Doris / StarRocks / ClickHouse / Snowflake 全原生集成 Iceberg Catalog

1 句选型口诀

跨引擎选 Iceberg,Databricks 选 Delta Lake,CDC 高频选 Hudi。

国内客户几乎都该选 Iceberg(Apache 顶级 + Doris/StarRocks 原生 + 信创友好)。


参考


📎 WordPress 链接

正文完