首页/数据/数据工程与 ETL 速查/Apache Iceberg 基础用法
本包目录(311 条)
管道基础52 条
Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

Apache Iceberg 基础用法

Iceberg 是开放表格式:用元数据文件管理快照与清单,支持隐藏分区、schema 演进与快照级时间旅行;Spark/Flink/Trino 等多引擎可读写同一张表。

核心快照 + 清单文件描述表状态,写入先提交新快照
能力隐藏分区、时间旅行、schema 演进、增量读
维护快照过期、清单合并、小文件 rewrite

Spark SQL 使用 Iceberg

Spark SQL 使用 Iceberg
CREATE TABLE local.db.orders (
  order_id STRING, amount DOUBLE, ts TIMESTAMP
) USING iceberg PARTITIONED BY (days(ts));

INSERT INTO local.db.orders VALUES ('o1', 9.9, TIMESTAMP '2026-10-11 10:00:00');
SELECT * FROM local.db.orders.snapshots;                 -- 查看快照
SELECT * FROM local.db.orders.history;                   -- 查看提交历史

快照回滚(Spark 过程调用)

快照回滚(Spark 过程调用)
CALL local.system.rollback_to_snapshot('db.orders', 1234567890);
隐藏分区让查询可以直接按 ts 过滤而无需感知分区函数,避免“分区列裸用”的维护负担。

易错点

  • 快照与清单不做过期清理,元数据会持续膨胀影响规划耗时
  • 小文件不 rewrite 会拖慢扫描,写入频率越高越需要定期维护

数据来源与参考

  • Apache Iceberg 官方文档:Spark Quickstart 与 Maintenance
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌