Acquire / file · All operations

Read a lakehouse table

A variant of Read a columnar file

Read a Delta Lake, Iceberg or Hudi table through its metadata, including earlier versions of it.

Status

In arcform

Not built yet

arcform does not do this yet. Its place on the roadmap

What other tools call it

Meridian's classification; an independent blind rating agreed on 95.7% of 324 rows (variant, version 3).

Apache Hop (1)
  • Spark lake table inputread 2026-09-27

    Read Delta Lake or Iceberg tables on native Spark, with time travel and projection

AWS Glue (3)
Azure Data Factory (1)
Duckle (2)
  • Apache Icebergread 2026-09-25

    read an Iceberg table with iceberg_scan or an attached REST catalog

  • Delta Lakeread 2026-09-25

    read a Delta Lake table with delta_scan

Polars (3)
  • read_deltaread 2026-09-27

    Read a Delta Lake table into a frame

  • scan_deltaread 2026-09-27

    Lazily read a Delta Lake table

  • scan_icebergread 2026-09-27

    Lazily read an Apache Iceberg table

Power Query M (2)
  • DeltaLake.Metadataread 2026-09-27

    Read the transaction log entries of a Delta Lake table

  • DeltaLake.Tableread 2026-09-27

    Read the contents of a Delta Lake table from a directory listing

Background

Lakehouse frameworks including Apache Iceberg, Delta Lake and Apache Hudi build a metadata layer on Parquet files for schema evolution and time-travel queries.[1] Delta Lake readers see one consistent snapshot of a table by using its transaction log to choose which data files to process.[2] In Apache Iceberg, a snapshot represents the state of a table at some time and is used to access the complete set of its data files.[3]

When to use it

Delta Lake time travel queries an older snapshot of a table, for uses such as re-creating analyses or reports and fixing mistakes in data.[4] In Delta Lake, a table read twice may return different results if its data is updated in between, and time travel can fix the data returned.[4] Delta Lake can time travel to a previous version only while both the log and the data files for that version are retained.[4] Delta Lake deletes data files only when VACUUM is run, and by default a file becomes a candidate for VACUUM 7 days after it was deleted from the table.[4] Pin the version or snapshot in any query whose answer has to be reproduced later, and find out how long the table keeps its history before relying on it. (Meridian's view)

Delta Lake's reference implementation stores data files in directories named after partition values by default, but a file's actual partition values must be read from the transaction log.[2] Read a lakehouse table through a reader for its format, rather than globbing its data files with a plain Parquet reader. (Meridian's view) In Apache Hudi, a Merge-on-Read table writes updates and deletes to log files, which are merged with the base files during query execution.[5] A read-optimized query on a Hudi Merge-on-Read table reads purely columnar base files, and can miss recent data that a snapshot query sees.[5]

DuckDB reads an individual Iceberg table directly from storage by pointing at its metadata, which needs no catalog and is read-only.[6] DuckDB's iceberg_scan reads a historical Iceberg snapshot when passed snapshot_from_id or snapshot_from_timestamp, which are mutually exclusive.[6]

The method

A Delta table has a single serial history of atomic versions, named using contiguous, monotonically increasing integers.[2] Delta log entries are JSON files in the _delta_log directory at the root of the table, each holding the actions that turn the previous version into the next.[2] Delta writers commit by adding a new entry to the log, which records the data files to logically add and remove.[2]

Apache Iceberg keeps table state in metadata files, and every change creates a new metadata file that replaces the old one with an atomic swap.[3] Iceberg readers use the snapshot that was current when they loaded the table metadata, and are not affected by changes until they refresh.[3] In Iceberg, a snapshot's data files are tracked by manifest files, which hold a row for each data file with its partition data and metrics.[3] Iceberg was started at Netflix by Ryan Blue and Dan Weeks, and its development began in 2017.[7]

In a Hudi Copy-on-Write table, record updates or deletes create new base files and no log files are written, so each query reads only base files.[5]

Compared with the alternatives

Iceberg addresses the performance and usability challenges of Apache Hive tables in large and demanding data lake environments.[7]