Wat is Apache Iceberg in Azure Databricks?

Important

Iceberg-tabellen die door Unity Catalog worden beheerd, zijn beschikbaar in openbare preview in Databricks Runtime 16.4 LTS en hoger. Externe Iceberg-tabellen zijn ook beschikbaar als openbare preview-versie in Databricks Runtime 16.4 LTS en hoger.

Iceberg v3-functies zijn beschikbaar in openbare preview in Databricks Runtime 18.0 en hoger. Zie Apache Iceberg v3-functies gebruiken.

Apache Iceberg is een opensource-tabelindeling voor analyseworkloads. Het ondersteunt functies zoals schemaontwikkeling, tijdreizen en verborgen partitionering. Net als Delta Lake biedt Iceberg een abstractielaag die ACID-transacties mogelijk maakt op gegevens die zijn opgeslagen in objectopslag. Azure Databricks ondersteunt Iceberg-tabellen die gebruikmaken van de Apache Parquet-bestandsindeling. Iceberg onderhoudt atomiciteit en consistentie door nieuwe metagegevensbestanden te schrijven voor elke tabelwijziging.

Een Iceberg-catalogus is de laag op het hoogste niveau van de Iceberg-tabelarchitectuur. Hiermee worden bewerkingen verwerkt, zoals het maken, verwijderen en hernoemen van tabellen. De belangrijkste verantwoordelijkheid is om de huidige metagegevens op te geven wanneer een tabel wordt geladen. Azure Databricks ondersteunt Iceberg-tabellen die worden beheerd door:

Alle Iceberg-tabellen in Azure Databricks volgen de specificatie van de open Iceberg-tabelindeling. Zie de Iceberg-tabelspecificatie.

Iceberg-tabellen maken in Unity Catalog

Iceberg-tabellen die zijn gemaakt in Unity Catalog zijn beheerde Iceberg-tabellen. U kunt deze tabellen maken met behulp van:

Beheerde Iceberg-tabellen zijn volledig geïntegreerd met Azure Databricks platformfuncties. Unity Catalog beheert levenscyclustaken, zoals verlooptijd van momentopnamen en bestandscompressie op deze tabellen. Beheerde Iceberg-tabellen ondersteunen ook vloeistofclustering, waardoor de queryprestaties worden verbeterd. Voorspellende optimalisatie automatiseert deze taken om de opslagkosten te verlagen en de querysnelheid te verbeteren. Databricks raadt het gebruik van Iceberg-clients 1.9.2 en hoger aan om te lezen en schrijven naar Unity Catalog.

Iceberg-tabellen lezen die worden beheerd door andere catalogi

Een buitenlandse Iceberg-tabel is een Iceberg-tabel die wordt beheerd door een catalogus buiten Unity Catalog. In de externe catalogus worden de huidige metagegevens van de tabel opgeslagen. Azure Databricks maakt gebruik van Lakehouse Federation om metagegevens op te halen en de tabel uit objectopslag te lezen.

Iceberg-tabellen van buitenaf zijn uitsluitend-lezen in Azure Databricks en hebben beperkte platformondersteuning.

Iceberg-tabellen openen met behulp van externe systemen

U hebt toegang tot alle Iceberg-tabellen in Unity Catalog met behulp van de ICEBERG REST Catalog-API. Deze open API ondersteunt lees- en schrijfbewerkingen van externe Iceberg-engines in verschillende talen en platforms. Zie Access Azure Databricks tabellen van Apache Iceberg-clients.

De REST-catalogus biedt ondersteuning voor referentieverkoop, waarmee tijdelijke referenties worden geleverd aan externe engines voor toegang tot de onderliggende opslag. Voor meer informatie, zie Unity Catalog-referentieverstrekking voor toegang tot externe systemen.

Waarschuwing

De verdeling van inloggegevens wordt niet ondersteund in de werkruimten die gebruikmaken van standaardopslag. Zie Beperkingen.

Evolutie van partities

Met de evolutie van partities kunt u het partitioneringsschema van een bestaande Apache Iceberg-tabel wijzigen zonder gegevens opnieuw te schrijven. Nieuwe gegevens worden geschreven met de bijgewerkte partitie-indeling en bestaande gegevens behouden de oorspronkelijke partitie-indeling. Apache Iceberg houdt de partitiespecificaties bij en past het juiste filter toe tijdens de query. Zie de evolutie van partities voor Apache Iceberg.

Opmerking

Ontwikkeling van partities wordt ondersteund op beheerde Iceberg-tabellen via externe Iceberg-engines met behulp van de Iceberg REST Catalog, maar niet via Databricks SQL. Partitietransformaties op basis van expressies, zoals years() en bucket() worden niet ondersteund voor beheerde Iceberg-tabellen. Zie de beperkingen van icebergtabellen.

Zie Access Azure Databricks tabellen van Apache Iceberg-clients om externe toegang te configureren.

In de volgende voorbeelden ziet u hoe u partitieontwikkeling gebruikt met Spark SQL en de Iceberg-extensie. Zie Apache Iceberg Spark DDL voor de evolutiesyntaxis van apache Iceberg-partities en ondersteunde transformaties.

Een partitieveld toevoegen

Een nieuw partitieveld toevoegen aan een bestaande tabel:

ALTER TABLE catalog.schema.table ADD PARTITION FIELD column_name;

Een partitieveld verwijderen

Een bestaand partitieveld uit een tabel verwijderen:

ALTER TABLE catalog.schema.table DROP PARTITION FIELD column_name;

Een partitieveld vervangen

Eén partitieveld wisselen voor een andere zonder tussenliggende repartitie:

ALTER TABLE catalog.schema.table REPLACE PARTITION FIELD old_column WITH new_column;

Beperkingen van ijsbergtabellen

De volgende beperkingen zijn van toepassing op Iceberg-tabellen in Azure Databricks en kunnen worden gewijzigd:

  • Iceberg-tabellen ondersteunen alleen de Apache Parquet-bestandsindeling.
  • Azure Databricks ondersteunt versies 1, 2 en 3 van de Iceberg-specificatie.
  • Verwijderingen van Iceberg v2-posities en op gelijkheid gebaseerde verwijderingen worden niet ondersteund. In plaats daarvan ondersteunt Azure Databricks Iceberg v3-verwijderingsvectoren voor verwijderingen op rijniveau.
  • Branchevorming en taggen worden niet ondersteund. Alleen de hoofdtak is toegankelijk bij het lezen van buitenlandse Iceberg-tabellen.
  • Partitioneren:
    • Ontwikkeling van partities wordt alleen ondersteund voor beheerde Iceberg-tabellen wanneer er interactie is tussen externe Iceberg-engines.
    • Buitenlandse Iceberg-tabellen bieden geen ondersteuning voor de evolutie van partities.
    • Partitioneren op BINARY type wordt niet ondersteund.
  • Weergaven worden niet ondersteund.
  • De volgende gegevenstypen worden niet ondersteund:
    • UUID
    • Fixed(L)
    • TIME
    • Ingebed STRUCT met vereiste velden

Beperkingen voor beheerde Iceberg-tabellen

De volgende beperkingen gelden specifiek voor beheerde Iceberg-tabellen:

  • Vectorzoekopdrachten worden niet ondersteund.
  • Iceberg biedt geen ondersteuning voor wijzigingengegevensfeed. Als gevolg hiervan wordt incrementele verwerking niet ondersteund bij het lezen van beheerde Iceberg-tabellen als bron voor:
    • Gematerialiseerde weergaven en streamingtabellen
    • Gegevensprofilering
    • Onlinetabellen
    • Lakebase
    • Gegevensclassificatie
  • Beheerde Iceberg-tabellen kunnen alleen worden gemaakt als voorspellende optimalisatie is ingeschakeld voor tabelonderhoud.
  • De volgende tabeleigenschappen worden beheerd door Unity Catalog en kunnen niet handmatig worden ingesteld:
    • write.location-provider.impl
    • write.data.path
    • write.metadata.path
    • write.format.default
    • write.delete.format.default
  • De compressiecodec voor het wijzigen van tabelcompressie wordt niet ondersteund. Alle tabellen maken standaard gebruik van Zstd.
  • Partitioneren op expressies (bijvoorbeeld years(), months(), days(), hours(), ) bucket()wordt niet ondersteund.
  • Functies die niet worden ondersteund in Apache Iceberg, zijn ook niet beschikbaar voor beheerde Iceberg-tabellen. Dit omvat Delta Lake gegenereerde kolommen, Beperkingen op Azure Databricks en Collatieondersteuning voor Delta Lake.

Beperkingen voor buitenlandse IJsberg-tabellen

De volgende beperkingen gelden specifiek voor buitenlandse Iceberg-tabellen:

  • Tijdreizen worden alleen ondersteund voor Iceberg-momentopnamen die eerder zijn gelezen in Azure Databricks (dat wil zeggen momentopnamen waarin een SELECT-instructie is uitgevoerd).
  • Het gebruik van buckettransformatiefuncties voor Iceberg partitionering kan de prestaties van query's verminderen wanneer voorwaardelijke filters worden gebruikt.
  • Producten voor cloudopslaglaagstructurering, zoals Amazon S3, zijn niet geïntegreerd met externe Iceberg-tabellen. Toegang krijgen tot buitenlandse Iceberg-tabellen in Azure Databricks kan data die in goedkopere opslaglagen is gearchiveerd, herstellen.
  • Voor clusters met een toegewijde toegangsmodus vereisen lees- en REFRESH FOREIGN TABLE-bewerkingen op Iceberg-tabellen ALL PRIVILEGES.