November 12, 2026
Software

Lakehouse Architecture: Iceberg vs Delta vs Hudi Compared

Apache Iceberg, Delta Lake, and Apache Hudi all add table-level transactions, schema evolution, and time travel on top of files in object storage, but they differ in engine neutrality, update patterns, and ecosystem maturity. Iceberg favors multi-engine flexibility, Delta Lake favors deep Databricks integration, and Hudi favors frequent upsert-heavy streaming ingestion.
MythReality
A lakehouse table format is just a file format like Parquet.Table formats sit above Parquet or ORC files and add a transaction log, metadata catalog, and schema history that Parquet alone does not provide.
Iceberg, Delta Lake, and Hudi are interchangeable and the choice barely matters.Each format makes different tradeoffs around engine support, update and delete performance, and how metadata is compacted, which shows up directly in operational cost.
Delta Lake only works with Databricks.Delta Lake is open source and readable by several engines, though its most advanced performance features remain deepest inside Databricks-run compute.
Picking a table format locks you into one query engine forever.All three formats support multiple engines to varying degrees, and migration tooling exists, though switching still carries real engineering cost.
Hudi is only useful for small teams doing simple batch jobs.Hudi was built at Uber specifically for high-frequency upsert workloads at large scale, making it a strong fit for streaming-heavy pipelines.

Why the Table Format Decision Matters More Than the File Format

Object storage such as Amazon S3, Google Cloud Storage, or Azure Blob Storage is cheap and durable, but it was never designed to support atomic multi-file transactions, safe concurrent writes, or a query engine asking what the table looked like an hour ago. Parquet and ORC solved efficient columnar storage, but they left a gap: nothing tracked which files belonged to a table at a given point in time, or coordinated writers so two jobs didn’t corrupt the same table simultaneously. Apache Iceberg, Delta Lake, and Apache Hudi all fill that gap, each with its own metadata layer, transaction log, and set of opinions about how ingestion, compaction, and schema changes should work.

This decision compounds the way big data analytics decisions reshape SaaS platforms more broadly: get the foundational storage layer wrong and every downstream analytics workload inherits that cost, whether through slower queries, brittle schema migrations, or expensive full-table rewrites. It is the analytical-storage counterpart to the build-versus-adopt decision teams face with vector search infrastructure, where existing investment and workload shape often matter more than a feature checklist.

Apache Iceberg

Origins and Design Philosophy

Iceberg started at Netflix to solve correctness and performance problems with Hive tables at large scale, and it was later donated to the Apache Software Foundation. Its defining design choice is engine neutrality: the specification is deliberately independent of any single processing engine, and Spark, Trino, Flink, Snowflake, and several other engines can all read and write Iceberg tables against the same metadata.

Strengths in Practice

Iceberg’s hidden partitioning removes the need for users to know a table’s physical partition scheme when writing queries, which avoids a common class of accidental full-table scans. Its snapshot-based time travel and rollback make it straightforward to audit or recover from a bad write. Because metadata is engine-agnostic, organizations running a mixed stack of Spark for batch processing and Trino for interactive queries can share one copy of the data without duplicating it per engine.

Where It Requires More Setup

Iceberg’s flexibility comes with more moving parts to configure: a catalog service such as the AWS Glue Catalog, Nessie, or a REST catalog needs to be running and correctly wired to every engine that touches the table, and compaction of small files needs to be scheduled rather than happening automatically in every deployment.

Delta Lake

Origins and Design Philosophy

Delta Lake was created by Databricks and open sourced through the Linux Foundation’s Delta Lake project. Its transaction log, stored as a sequence of JSON and checkpoint Parquet files, gives ACID guarantees on top of cloud object storage and integrates tightly with Spark’s execution engine.

Strengths in Practice

Delta Lake’s deepest optimizations, including data skipping, Z-ordering, and automatic file compaction through its OPTIMIZE command, are most mature when run on Databricks-managed compute, where Delta gets performance features ahead of the fully open-source release. Teams already standardized on Databricks for their Spark workloads get a cohesive experience across ingestion, transformation, and governance through Unity Catalog.

Where It Requires More Setup

Reading and writing Delta tables from engines outside the Spark and Databricks ecosystem has improved through Delta Lake’s standalone readers and the delta-rs project, but feature parity with the Databricks-native experience is not guaranteed, and teams running a heavily multi-engine stack should verify specific feature support before committing.

Metadata Layer Above Shared Storage

Picture three stacked layers. The bottom layer is plain object storage holding Parquet files. The middle layer is the table format’s metadata: a transaction log for Delta Lake, manifest and snapshot files for Iceberg, or a timeline of commits for Hudi. The top layer is the query engine, whether Spark, Trino, Flink, or Presto, reading through that metadata layer to know exactly which files are valid for a given query at a given point in time.

Apache Hudi

Origins and Design Philosophy

Hudi, short for Hadoop Upserts Deletes and Incrementals, was built at Uber to solve a problem the other two formats treat as secondary: efficiently applying frequent updates and deletes to large tables, driven by streaming change data capture from operational databases.

Strengths in Practice

Hudi’s Copy-on-Write and Merge-on-Read table types give teams a direct choice between write amplification and query latency, letting streaming-heavy pipelines tune for their actual workload rather than accepting a one-size-fits-all default. Its built-in indexing for locating records during upserts makes high-frequency update workloads, such as syncing a transactional database into the lakehouse continuously, noticeably more efficient than append-and-compact approaches.

Where It Requires More Setup

Hudi’s configuration surface is larger than the other two formats because it exposes more low-level tuning for indexing strategy, table type, and compaction scheduling, which means teams get more control but also carry more responsibility for getting those settings right for their workload.

Head-to-Head Comparison

DimensionApache IcebergDelta LakeApache Hudi
Primary originNetflix, now Apache Software FoundationDatabricks, Linux Foundation projectUber, now Apache Software Foundation
Engine neutralityVery high, spec designed engine-agnosticStrong, deepest features on DatabricksGood, Spark and Flink most mature
Best fit workloadMixed-engine analytical queries at scaleSpark-centric pipelines on DatabricksHigh-frequency streaming upserts
Update and delete modelMerge-on-read and copy-on-write supportedMerge-on-read via deletion vectorsBoth models with tunable indexing
Catalog requirementExternal catalog service requiredWorks with Hive metastore or Unity CatalogTimeline metadata alongside table path

How to Actually Choose

Start From Your Existing Engine Stack

If your organization already runs primarily on Databricks and most transformation logic lives in Spark notebooks or jobs, Delta Lake requires the least new tooling and gets the most mature feature set immediately. If your stack spans Trino for BI queries, Flink for streaming, and Spark for batch, Iceberg’s engine-neutral metadata avoids duplicating data or picking a lowest-common-denominator format. This kind of platform-first evaluation mirrors how teams approach broader cloud infrastructure adoption decisions, where existing tooling investment often outweighs a marginal feature advantage elsewhere.

Start From Your Ingestion Pattern

Workloads dominated by streaming change data capture from operational databases, with frequent row-level updates and deletes arriving continuously, tend to fit Hudi’s design center most naturally, since its indexing and table type choices were built around exactly that pattern. Batch-oriented analytical ingestion, where data lands in larger periodic writes, fits comfortably with any of the three, and the orchestration layer coordinating those ingestion jobs matters as much as the format itself, a point covered in depth in how modern orchestration platforms coordinate distributed data workflows.

Start From Your Governance Requirements

Organizations with strict data governance and lineage requirements should evaluate each format’s catalog integration carefully, since fine-grained access control, audit logging, and lineage tracking are typically implemented at the catalog layer rather than inside the table format itself.

Ingestion Pattern Versus Format Fit

Imagine a simple horizontal spectrum from mostly-append batch ingestion on the left to high-frequency streaming upserts on the right. Delta Lake and Iceberg cluster comfortably across the left and middle of that spectrum. Hudi’s advantage grows as you move toward the right end, where update and delete throughput starts to dominate the workload’s performance profile.

Migration and Interoperability

None of these choices are permanent, though switching format is real engineering work rather than a configuration flag. Iceberg’s community has invested in migration tooling that can convert existing Hive or Delta tables into Iceberg metadata without rewriting the underlying Parquet files, and similar in-place migration options exist for moving between the other formats when the underlying data files use compatible formats. Because all three ultimately store data in Parquet or ORC files on the same object storage, the heaviest cost of migration is usually rebuilding pipeline code and catalog configuration rather than physically moving the data itself, a lesson echoed in how early-stage teams choose and later outgrow their initial data stack.

Common Mistakes

  • Choosing a table format based on a feature comparison chart rather than testing against the organization’s actual ingestion pattern and engine mix.
  • Neglecting to schedule compaction jobs, letting small file counts grow unchecked until every query slows down across the affected tables.
  • Assuming a catalog service is optional, then discovering that concurrent writes from multiple engines silently corrupt table state without one.
  • Migrating to a new table format for a marginal performance gain without accounting for the cost of rewriting existing pipeline and orchestration code.
  • Treating Delta Lake’s open-source release as functionally identical to the Databricks-managed experience without verifying specific feature support first.

Expert Practice

Data platform teams that navigate this well typically start by mapping their actual query patterns and ingestion cadence before touching any table format documentation: how many engines need to read the same tables, how often rows get updated versus purely appended, and how strict the governance and audit requirements are. They then run a small proof of concept with real production-shaped data, on a non-critical dataset, measuring compaction behavior, query latency across every engine that needs access, and the operational overhead of running the required catalog service. Only after that proof of concept do they commit a primary analytical dataset to one format, and even then they document the decision criteria so a future team can revisit it without re-litigating the whole evaluation from scratch.

Glossary

Lakehouse
An architecture that combines the low-cost storage of a data lake with the transactional guarantees and schema management traditionally associated with a data warehouse.
ACID transactions
A set of guarantees, atomicity, consistency, isolation, and durability, that ensure table operations complete fully or not at all, even under concurrent access.
Copy-on-write
A table update strategy that rewrites entire data files containing changed rows, favoring faster reads at the cost of slower writes.
Merge-on-read
A table update strategy that stores changes separately and merges them at query time, favoring faster writes at the cost of some read overhead.
Catalog service
A system that tracks which metadata file currently represents the authoritative state of a table, coordinating safe concurrent access across query engines.
Schema evolution
The ability to add, rename, or reorder table columns over time without needing to rewrite all existing historical data files.

Key Takeaways

  • Iceberg, Delta Lake, and Hudi all add transactions, schema evolution, and time travel above plain Parquet or ORC files in object storage.
  • Iceberg’s engine-neutral design suits organizations running a mixed stack of Spark, Trino, and Flink against the same tables.
  • Delta Lake’s deepest performance features are most mature on Databricks-managed compute, though open-source readers continue to improve.
  • Hudi was purpose-built for high-frequency upsert and streaming change data capture workloads, with tunable indexing most teams do not need elsewhere.
  • All three require a working catalog or metadata coordination layer, and skipping that setup risks silent corruption under concurrent writes.
  • Migration between formats is possible without physically rewriting data files, but pipeline and orchestration code still needs real rework.
  • The right choice follows from existing engine investment, ingestion pattern, and governance requirements, not from a feature checklist alone.

FAQs

Can Apache Iceberg, Delta Lake, and Hudi all run on the same object storage bucket?

Yes, all three store their underlying data as Parquet or ORC files on standard object storage such as S3 or Google Cloud Storage, and different tables within the same bucket can even use different formats. What differs is the metadata layer each format keeps to track table state, so mixing formats in one bucket works but adds operational complexity.

Is Delta Lake really open source or only usable through Databricks?

Delta Lake is genuinely open source under the Linux Foundation, with readers and writers available outside Databricks through projects like delta-rs. However, several of its most advanced performance optimizations were historically released first, or exclusively, on Databricks-managed compute, so feature parity should be verified for any specific capability your team depends on.

Which table format handles frequent row-level updates best?

Apache Hudi was purpose-built at Uber specifically for high-frequency upsert and delete workloads, with indexing strategies designed to locate records efficiently during updates. Iceberg and Delta Lake both support merge-on-read patterns for updates as well, but Hudi’s configuration options for this specific pattern are the most extensive of the three.

Do I need a separate catalog service for these table formats to work correctly?

Yes, in nearly all production setups. Iceberg requires an external catalog such as AWS Glue, Nessie, or a REST catalog implementation. Delta Lake typically works through a Hive metastore or Databricks Unity Catalog. Hudi maintains its own timeline metadata but still benefits from catalog integration for engines that need to discover tables automatically.

How difficult is it to migrate from one table format to another?

Migration tooling exists for converting existing Hive or Delta tables into Iceberg metadata without rewriting the underlying Parquet files, which keeps the data movement cost low. The larger cost is almost always rewriting pipeline code, orchestration jobs, and catalog configuration to work with the new format’s APIs and conventions.

Does choosing Iceberg mean giving up Databricks-specific features?

Not entirely. Databricks does support reading and writing Iceberg tables through its Uniform feature and related tooling, but the deepest Databricks-native optimizations remain most tightly coupled to Delta Lake. Teams committed to Databricks as their primary compute layer generally get a smoother experience defaulting to Delta Lake.

What happens if small file compaction is neglected on any of these formats?

Query performance degrades steadily as file counts grow, since query engines need to open and scan more small files to satisfy the same request. All three formats provide compaction tooling, but none of them run it automatically without being scheduled, so this needs to be treated as an ongoing operational task rather than a one-time setup step.

Is one of these three formats simply the newest and therefore the best default choice?

No single format is universally best. Each reflects the priorities of the organization that built it: Netflix’s emphasis on engine neutrality for Iceberg, Databricks’ emphasis on tight Spark integration for Delta Lake, and Uber’s emphasis on upsert performance for Hudi. The right choice depends on your engine mix, ingestion pattern, and governance needs.

  • Apache Iceberg official documentation and project specification
  • Delta Lake official documentation, Linux Foundation project
  • Apache Hudi official documentation and technical design papers
  • Netflix Technology Blog, engineering posts on Iceberg’s origins
  • Databricks Engineering Blog, Delta Lake architecture and optimization posts
  • Uber Engineering Blog, Hudi design and upsert performance posts
    Mei Chen

    author
    Mei holds a B.Sc. in Bioinformatics from Tsinghua University and an M.S. in Computer Science from the University of British Columbia. She analyzed large genomic datasets before joining platform teams that power research analytics at scale. Working with scientists taught her to respect reproducibility and to love a well-labeled dataset. Her articles explain data governance, privacy-preserving analytics, and the everyday work of making science repeatable in the cloud. Mei mentors students on open science practices, contributes documentation to research tooling, and maintains example repos people actually fork. Off hours, she explores tea varieties, walks forest trails with a camera, and slowly reacquaints herself with Chopin on an old piano.

      Leave a Reply

      Your email address will not be published. Required fields are marked *