# Apache Iceberg

> Open table format for large analytic datasets

Apache Iceberg is an open table format bringing ACID transactions, schema evolution, and time travel to data lake tables, with broad engine support.

Website: https://iceberg.apache.org

## Use it when

- Several engines must read and write one copy of the data: Spark, Trino, Flink, and most warehouses speak Iceberg through a catalog.
- Schemas and partition layouts will change over time; field IDs and hidden partitioning let both evolve without rewriting files.
- You need snapshots for time travel, rollback, and reproducible reads.
- Vendor neutrality matters: it is the convergence target other formats translate into, with the broadest catalog ecosystem.

## Think twice when

- You do not want to run or choose a catalog; Iceberg requires one (REST, Hive, Glue, or Nessie), unlike Delta's self-contained log.
- Nobody will own table maintenance: snapshot expiry, orphan cleanup, and compaction are jobs you schedule.
- The table takes continuous high-frequency updates by key; an LSM-based format like Paimon, or Hudi, is built for that shape.
- You need secondary indexes; Iceberg prunes with min/max statistics and partitions only.

## How it runs

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.

## Details

### General

| Attribute | Value |
| --- | --- |
| License | Open source (permissive) |
| SPDX identifier | Apache-2.0 |
| Deployment | Self-hosted, Managed |
| Operational complexity | Medium |
| Pricing | Free |
| Language | Java, Python, Rust, Go |
| Repository | https://github.com/apache/iceberg |
| Documentation | https://iceberg.apache.org/docs/latest/ |
| Stars | 9.3k |

### Table Formats

| Attribute | Value |
| --- | --- |
| Engine support | Broad read and write: Spark, Flink, Trino, and warehouses |
| 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 |
| Maintenance | Expire snapshots, delete orphans, compact files, rewrite manifests, you schedule them |
| Change feed | Incremental scans; v3 row lineage |
| Cross-format reads | The convergence target: XTable translates in, UniForm and Paimon write Iceberg metadata |

## Capabilities

- [Table Formats](https://matca.io/capabilities/table-format)

---

Source: https://matca.io/apache-iceberg
Last updated: 2026-08-31T11:40:47.773Z
