No history yet

Introduction to Apache Iceberg

The Problem with Piles of Files

Data lakes were supposed to be the ultimate storage solution. A single place to dump all your data, in any format, ready for analysis. But this flexibility came with a cost. Without a strong system to manage it all, a data lake can quickly turn into a data swamp: a messy, unreliable collection of files where finding the right data is a nightmare.

Imagine trying to manage a massive library where books are just files in a folder. There's no card catalog telling you what's inside each book, where it is, or which version is the most current. If someone adds a new chapter to a book, they might just save a new file, leaving the old one behind. This is the chaos data teams faced. Simple questions like "What data do we have?" or "Is this data up-to-date?" became incredibly hard to answer.

Apache Iceberg is an open table format for huge analytic datasets.

Engineers at Netflix faced this problem at a massive scale and decided to build a better way. The result was Apache Iceberg. Iceberg isn't a new file format or a storage engine. Instead, it's an open table format—a metadata layer that sits on top of your existing data files (like Parquet, AVRO, or ORC) and treats them like a proper database table.

Bringing Order to Chaos

Iceberg introduces features that were once exclusive to traditional databases, bringing reliability and predictability to the data lake.

ACID

noun

An acronym for Atomicity, Consistency, Isolation, and Durability. These properties guarantee that database transactions are processed reliably.

One of the most important features is support for ACID transactions. In a typical data lake, if a job writing new data fails halfway through, you're left with a mess of partial and corrupted files. Readers who access the data during the write might see an inconsistent, incomplete view.

Iceberg solves this by making every change atomic. A transaction, which could involve adding, deleting, or updating thousands of files, is committed in a single, all-or-nothing operation. The change is only visible to readers once it has successfully completed. This completely eliminates the problem of data corruption from failed jobs.

With Iceberg, your data is always in a consistent, queryable state. A write operation either succeeds completely or fails cleanly, leaving the table untouched.

Another major challenge in data lakes is handling schema evolution. Businesses change, and so does the data they collect. You might need to add a new column, rename an existing one, or even change a column's data type. In older systems like Hive, these changes were risky and difficult. Renaming a column could break queries, and dropping a column might lead to data loss or errors.

Lesson image

Iceberg was designed with schema evolution in mind. It tracks column IDs independently of column names, so you can safely rename a column without rewriting any data files. New columns can be added without affecting old data, and older queries will continue to work as expected. These changes are just metadata updates, making them fast and safe.

OperationTraditional Hive TableApache Iceberg Table
Add ColumnFast metadata changeFast metadata change
Rename ColumnBreaks queries on old dataSafe, fast metadata change
Drop ColumnCan corrupt data if read by old schemaSafe, no data is immediately deleted
Change Column TypeRequires rewriting the entire tableSupported for compatible types

A Version History for Your Data

Perhaps Iceberg's most powerful feature is its snapshot-based architecture, which enables "time travel."

Every time you modify an Iceberg table, it doesn't alter the existing data files. Instead, it creates new files and then commits a new metadata snapshot that points to the complete set of files making up the new version of the table. The old snapshot and its files are kept.

This is like having a complete version history for your data. Made a mistake and loaded bad data? You can instantly roll back the table to the snapshot right before the error occurred. Need to audit how a specific record changed over the past week? You can query the table as it existed at different points in time to see the evolution.

This capability is revolutionary for data reproducibility and debugging. If a machine learning model's performance suddenly drops, you can query the exact version of the data it was trained on. If a financial report looks wrong, you can reproduce it using the data as it was at the end of the quarter.

By providing a reliable, transaction-safe, and flexible way to manage files in a data lake, Apache Iceberg helps deliver on the original promise: a scalable, central repository for data that you can actually trust.

Quiz Questions 1/6

What is a "data swamp"?

Quiz Questions 2/6

Which of the following best describes what Apache Iceberg is?