Open Table Formats

The file-level table layers of the lakehouse: Iceberg, Delta Lake, Hudi, Paimon, DuckLake, Lance and XTable.

Apache Paimon

Apache Paimon (formerly Flink Table Store) is a streaming-first open table format that originated in the Apache Flink community and graduated to a top-level…

Apache XTable

Apache XTable (formerly OneTable, originated at Onehouse) is an open-source interoperability layer that translates table metadata between Apache Hudi, Apache…

Apache Hudi

Apache Hudi (Hadoop Upserts Deletes and Incrementals) is an open-source data management framework that simplifies large-scale data ingestion and provides…

Apache Iceberg

Apache Iceberg is a modern data management framework built to support large-scale data lakes with ACID transactions and flexible partitioning, making it…

Delta Lake

Delta Lake is the third major open table format alongside Apache Hudi and Apache Iceberg. Originated at Databricks in 2019 and donated to the Linux…

DuckLake

DuckLake is a 2025 lakehouse format from the DuckDB team. Its central design choice is unusual: instead of storing table metadata as JSON / Avro files in the…

Lance

Lance is an open-source columnar data format optimized for machine-learning and AI workloads. Built by LanceDB, Lance is positioned as a successor to Parquet…

1. What table formats do

What a Table Format Adds on Top of Files Engines: Spark, Trino, Flink, DuckDB, Snowflake, Databricks Catalog: current metadata pointer per table (Hive, Glue, Nessie, Unity, Polaris) Table format metadata: schema, partitions, snapshots, file statistics Data files in object storage: Parquet / ORC / Avro / Lance

A data lake on its own is a directory of Parquet or ORC files. Engines that read it have to list directories, guess the schema and hope nobody is writing at the same time. An open table format adds a metadata layer that records exactly which files make up each version of the table, along with schema, partitioning and column statistics. Writers commit by atomically swapping a pointer to new metadata, which gives ACID transactions, snapshot isolation for readers, time travel to earlier versions, schema evolution and file-level pruning. The catalog stores that pointer and lets many engines share one copy of the data.

2. Formats in this section

Apache Icebergtable formatsengine-neutral format with hidden partitioning and a broad catalog ecosystem. Delta Laketable formatstransaction-log format that grew up with Spark and Databricks. Apache Huditable formatsupsert- and incremental-processing-oriented, with copy-on-write and merge-on-read tables. Apache Paimontable formatsLSM-based format designed for streaming updates with Flink. DuckLaketable formatskeeps lakehouse metadata in a SQL database instead of files. Lancetable formatscolumnar format tuned for ML and vector search with fast random access. Apache XTabletable formatstranslates metadata between Iceberg, Delta and Hudi so one copy is readable as all three.

3. When to use which

NeedGood fit
Multi-engine analytics, vendor neutralityIceberg
Databricks or Spark-centred platformDelta Lake
Frequent upserts and change-data-capture ingestionHudi or Paimon
Streaming-first pipelines on FlinkPaimon
Small-to-medium lakehouse with simple operationsDuckLake
Embeddings, images, ML training dataLance
Existing tables in one format, readers needing anotherXTable

The major formats have converged on features, so the decision usually follows the engines and catalog you already run. Interoperability efforts such as XTable and Delta UniForm reduce the cost of choosing wrong.

Table formats depend on a catalog; see Catalogs for Unity Catalog, Project Nessie and Apache Polaris, and Query Engines for Trino and StarRocks.