Columnar Data, from the inside out Compare the layers →

Columnar / Table operations

One history. Two tables.

Ask both formats to make the same changes. Compare their published metadata, active files, column identities and complete native answers at each step.

Spark 3.5.6 · Iceberg 1.9.2 · Delta 3.3.2. Polars 1.44.1 / PyArrow 25.0.1 independently checks every answer. These are recorded native executions over synthetic data; choosing a step does not execute table writes in your browser.

Start with eight rows

Create the schemas and insert IDs 1–8. Each table initially reads one data file.

Start with eight rows: 8 logical rows in each table.

Iceberg

8 logical rows · 1 active data file

ID 3: present in this answer.

Selected snapshot ID
3124721227398476787
Published root for this read
iceberg/metadata/v2.metadata.json
Format requirements
{"formatVersion":2}
Metadata dependencies (3)

The metadata root selects a snapshot, its manifest list and the manifests that identify active files.

Active files and column identities

Logical field → stable identity

  • id · field ID 1
  • category · field ID 2
  • score · field ID 3

Opening a physical Parquet file alone does not interpret table-level column identity. The recorded logical rows below come from the compatible native reader.

Complete logical answer

idcategoryscore
1south10
2north20
3south30
4north40
5south50
6north60
7south70
8north80
Executed commands and read
INSERT INTO lab.default.history VALUES (1,'south',10),(2,'north',20),(3,'south',30),(4,'north',40),(5,'south',50),(6,'north',60),(7,'south',70),(8,'north',80)
SELECT * FROM lab.default.history ORDER BY id

Delta

8 logical rows · 1 active data file

ID 3: present in this answer.

Selected log version
1
Published root for this read
delta/_delta_log/00000000000000000001.json
Format requirements
{"minReaderVersion":2,"minWriterVersion":5}· name-based column mapping
Metadata dependencies (2)

This small fixture replays the original JSON commits through the selected version. It has no checkpoint.

Active files and column identities

Logical field → stable identity

  • id · field ID 1
    Physical Parquet name: col-3ef1f681-8190-44ee-b0d6-be194603f417
  • category · field ID 2
    Physical Parquet name: col-caaa0922-dcdf-418a-b17c-c6749d96593f
  • score · field ID 3
    Physical Parquet name: col-0702c016-a016-400b-ab07-3972fa61525e

Opening a physical Parquet file alone does not interpret table-level column identity. The recorded logical rows below come from the compatible native reader.

Complete logical answer

idcategoryscore
1south10
2north20
3south30
4north40
5south50
6north60
7south70
8north80
Executed commands and read
INSERT INTO delta.`<workspace>/delta` VALUES (1,'south',10),(2,'north',20),(3,'south',30),(4,'north',40),(5,'south',50),(6,'north',60),(7,'south',70),(8,'north',80)
SELECT * FROM delta.`<workspace>/delta` ORDER BY id

Reproduce the comparison.

Local Hadoop Iceberg catalog and path-based Delta, copy-on-write operations, Delta name column mapping enabled from table creation. No REST catalog, CDF, merge-on-read or generic browser table execution.

The native readers check every current and retained answer against independently constructed Polars rows. The verifier also follows original Iceberg manifests and Delta commits, selects the recorded files and reconstructs their logical columns from original Parquet bytes using field IDs or physical names. Rename checks require identical file hashes and preserved column identities.

Complete capture and SHA-256 manifest · All original table files · Pinned reproduction recipe

Run uv run reproduce.py --output new-history with Java 17 to generate a new disposable history. Add --verify --output existing-history to check an existing capture against a fresh run. Native snapshot IDs, file UUIDs and timestamps vary between runs; complete rows, logical identities and file-count transitions must agree.

Original Iceberg metadata retains its native local paths. Downloads preserve those original bytes; the browser does not follow those paths. Inspect downloaded metadata with an explicit companion mapping →

Iceberg mechanisms → · Delta mechanisms → · Evidence registry →