Dictionary

Apache Iceberg

Apache Iceberg is een open tabelformaat voor grote analytische datasets op object storage. Het transformeert een map met Parquet-bestanden in een echte, transactionele tabel met schema-evolutie, time travel en snapshot-isolatie.

Wat is Apache Iceberg?

Apache Iceberg is een open tabelformaat voor grote analytische datasets op object storage. Het doet wat Delta Lake en Apache Hudi ook doen: een map met Parquet-bestanden transformeren in een echte, transactionele tabel waarop je ACID-updates kan uitvoeren, schema's kan evolueren en kan tijdreizen naar oudere versies.

Iceberg werd in 2017 bij Netflix gestart door Ryan Blue en Dan Weeks. In november 2018 werd het als open source gedoneerd aan de Apache Software Foundation en in mei 2020 groeide het door tot top-level Apache-project. Sindsdien heeft het adoptie gevonden bij onder meer Netflix, Apple, Airbnb, Adobe, LinkedIn, Expedia en zowat elke moderne lakehouse-speler.

Je kan Iceberg zien als een versiebeheersysteem bovenop je datamap. De Parquet-bestanden zijn de eigenlijke bestanden in de repo, de Iceberg-metadata is de git-log die weet welke commit welke bestanden bevat. Checkout, revert, parallelle schrijvers: allemaal mogelijk zonder de onderliggende data te herschrijven.

Waarom Iceberg boven klassieke Hive-tabellen?

Wie vroeger een data lake beheerde, deed dat met een Hive Metastore en een map met Parquet-bestanden. Die aanpak botst op grenzen zodra schaal en concurrency toenemen.

Geen transactionaliteit
Twee jobs die tegelijk schrijven in dezelfde Hive-tabel kunnen elkaars data overschrijven of inconsistente states achterlaten. Iceberg lost dat op met snapshot-gebaseerde optimistic concurrency: elke schrijfactie eindigt in een nieuwe snapshot, conflicten worden gedetecteerd en krijgen een retry.

Trage metadata
Hive moet bij elke query de lijst met partities opvragen aan de metastore. Op tabellen met miljoenen partities wordt dat een bottleneck. Iceberg's hiërarchische metadata (manifest lists die naar manifest files wijzen, die naar data files wijzen) maakt file pruning veel efficiënter.

Schema-evolutie zonder herschrijven
Een kolom toevoegen, hernoemen of wijzigen in Hive betekent vaak een massale herschrijfoperatie. Iceberg volgt kolommen op ID, niet op positie of naam. Add, drop en rename hebben geen data-herschrijving nodig.

Partition evolution
Oorspronkelijk gepartitioneerd op dag en achteraf besloten dat maandniveau beter was? In Hive is dat een migratie. In Iceberg wijzig je de partitionering voor nieuwe data zonder de oude te moeten aanraken.

Time travel
Elke snapshot is een geldige leesbare versie van de tabel. Herstel een fout door terug te lezen vanuit een oudere snapshot, debug een verschil door twee versies te vergelijken.

Onder de motorkap

Een Iceberg-tabel is een hiërarchie van bestanden op object storage, plus een catalogverwijzing naar de huidige metadata pointer.

Catalog
Houdt de verwijzing naar de huidige metadata.json bij, per tabel. Opties zijn AWS Glue, Apache Nessie, Polaris Catalog (door Snowflake open-sourced in 2024, nu in Apache-incubatie), Hive Metastore en REST-catalogs. Je keuze van catalog bepaalt welke engines direct kunnen lezen en schrijven.

metadata.json
Beschrijft het huidige schema, de partitiespec, de snapshothistorie en verwijzingen naar manifest lists. Dit bestand wordt vervangen bij elke commit.

Manifest list
Eén bestand per snapshot, wijst naar de relevante manifest files, met min/max-statistieken op partitionwaardes.

Manifest files
Wijzen naar individuele data files (Parquet, ORC of Avro), met per bestand statistieken over kolomwaardes, min/max en null counts. Die statistieken maken predicate pushdown op tabelniveau mogelijk.

Data files
De eigenlijke Parquet-bestanden (of ORC, of Avro). Iceberg herschrijft die niet bij schema-wijzigingen, enkel bij compaction of expliciete rewrites.

Iceberg versus Delta Lake versus Hudi

De drie grote open tabelformaten op lakehouse-storage. Ze lossen hetzelfde probleem op, met andere accenten.

Delta Lake
Ontstaan bij Databricks, sterk gekoppeld aan Spark. Delta is in de Databricks- en Microsoft Fabric-wereld de dominante keuze. Recent toegevoegd: Delta UniForm kan hetzelfde bestandsformaat ook als Iceberg presenteren, waardoor een Delta-tabel door Iceberg-engines gelezen wordt.

Apache Iceberg
Open governance bij de Apache Foundation. Ontworpen om engine-agnostisch te zijn: Spark, Trino, Flink, Presto, Hive, Impala, Dremio, Snowflake, BigQuery, Athena en DuckDB kunnen Iceberg allemaal lezen. Voor organisaties die niet aan één vendor willen hangen, de voor de hand liggende keuze.

Apache Hudi
Oorspronkelijk gebouwd voor streaming-upserts bij Uber. Sterk in use cases met veel kleine incrementele updates. Minder breed ondersteund dan Iceberg en Delta.

In de praktijk wint Iceberg terrein in vendor-overstijgende omgevingen, terwijl Delta binnen Microsoft Fabric en Databricks dominant blijft. Dankzij UniForm en projecten als Apache XTable convergeert het veld, maar onder de kap blijven verschillen in governance, catalogkeuze en engine-ecosysteem relevant.

Iceberg in Microsoft Fabric en daarbuiten

Microsoft Fabric
OneLake ondersteunt Delta native. Via OneLake-snelkoppelingen naar Iceberg kan je Iceberg-tabellen ook direct in Fabric lezen zonder ze te kopiëren. Dat maakt Fabric bruikbaar in omgevingen waar de upstream data in Iceberg zit, bijvoorbeeld Snowflake of een Athena-gebaseerd lakehouse.

Snowflake
Ondersteunt Iceberg als externe tabel én als native tabel, met Polaris Catalog als open-source catalog-optie. Query-performance is vergelijkbaar met Snowflake's eigen formaat.

Databricks
Leest Iceberg via Uniform en Unity Catalog-federation. Schrijven in Iceberg-formaat is beperkter, de focus blijft Delta.

Dremio, Trino, DuckDB
Allemaal first-class Iceberg-ondersteuning, vaak met het beste ecosysteem voor self-service query op Iceberg-tabellen.

Valkuilen

Catalog-keuze is geen detail
Je catalog bepaalt welke engines rechtstreeks kunnen lezen en schrijven. Kies je Glue, dan wordt Snowflake lastiger. Kies je Polaris Catalog, dan hang je vooral in het Snowflake-ecosysteem. Kies je Nessie of een REST-catalog, dan houd je opties open. Denk hier vroeg over na, niet achteraf.

Te kleine bestanden
Zoals bij Parquet in het algemeen: streams die elke minuut een nieuw bestand droppen, produceren duizenden micro-Parquet-bestanden. Queries lopen dan vast op metadata, niet op data. Plan compaction-jobs vanaf dag één.

Engine-compatibiliteit drift
Iceberg evolueert, engines lopen niet altijd synchroon. Een nieuwe feature (v3-specificatie, row-level deletes via deletion vectors) kan door engine A al ondersteund zijn en door engine B nog niet. Check de versies voor je productie draait op de ondergrens van beide.

Schema evolution is niet rewrite-vrij voor alles
Kolomtypes wijzigen tussen incompatibele types (integer naar string) vraagt wel degelijk een rewrite. Column rename is gratis, type-verandering niet altijd.

Deletes en updates kosten meer dan appends
Iceberg ondersteunt row-level deletes en updates, maar die zijn duurder dan pure appends. Voor hoog-frequente updates is Hudi soms geschikter, of een streaming-aggregationpatroon dat appends blijft schrijven.

Laatst Bijgewerkt: April 23, 2026 Terug naar Woordenboek
Trefwoorden
apache iceberg iceberg lakehouse parquet delta lake apache hudi open table format microsoft fabric onelake snowflake databricks nessie polaris catalog ryan blue netflix