Apache Iceberg is an open table format bringing ACID transactions, schema evolution, and time travel to data lake tables, with broad engine support.
Iceberg is a specification with libraries inside the engines, so there is nothing to deploy except the catalog that resolves table names. Data and metadata files sit on object storage; commits swap a metadata pointer atomically, giving serializable isolation by default. Maintenance runs as engine jobs you schedule. Nearly every lakehouse vendor offers managed Iceberg tables, catalogs, and maintenance.
How Apache Iceberg answers the questions Table Formats turns on.
| How it works | |
| Catalog | Required: REST, Hive, Glue, Nessie; Hadoop file-based option |
| Update model | Copy-on-write and merge-on-read; v3 deletion vectors |
| Partitioning | Hidden: transforms on a column, and the spec evolves without rewriting data |
| Schema evolution | Field IDs: add, drop, rename, reorder and widen without touching a file |
| Concurrent writers | Optimistic: atomic swap of the metadata pointer, serializable by default |
| Indexes | Manifest min/max stats and partition pruning; Puffin holds stats, no secondary indexes |
| Change feed | Incremental scans; v3 row lineage |
| Running it | |
| Maintenance | Expire snapshots, delete orphans, compact files, rewrite manifests, you schedule them |
| Connections | |
| Engine support | Broad read and write: Spark, Flink, Trino, and warehouses |
| Cross-format reads | The convergence target: XTable translates in, UniForm and Paimon write Iceberg metadata |
vs Apache Iceberg: Java
vs Apache Iceberg: Java
vs Apache Iceberg: Scala, Java, Rust, Python