Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Apache Iceberg is een opensource-tabelindeling voor analyseworkloads. Het ondersteunt functies zoals schemaontwikkeling, tijdreizen en verborgen partitionering. Net als Delta Lake maakt Iceberg een abstractielaag die ACID-transacties op uw gegevens in objectopslag toestaat.
Azure Databricks ondersteunt Iceberg-tabellen die gebruikmaken van de Apache Parquet-bestandsindeling en versie 1, 2 en 3 van de Iceberg-specificatie. Iceberg onderhoudt atomiciteit en consistentie door nieuwe metagegevensbestanden te schrijven voor elke tabelwijziging. Alle Iceberg-tabellen in Azure Databricks volgen de specificatie van de open Iceberg-tabelindeling. Zie de Iceberg-tabelspecificatie.
Een Iceberg-catalogus is de laag op het hoogste niveau van de Iceberg-tabelarchitectuur die de huidige metagegevens retourneert bij het laden van een tabel. De Iceberg-catalogus verwerkt bewerkingen zoals het maken, verwijderen en hernoemen van tabellen.
Azure Databricks ondersteunt Iceberg-tabellen die worden beheerd door:
- Unity-catalogus
- Buitenlandse catalogi, zoals AWS Glue, Hive-metastore of Snowflake Horizon Catalog
Requirements
U moet aan de volgende vereisten voldoen:
- Een werkruimte waarvoor Unity Catalog is ingeschakeld.
- Gebruik Databricks Runtime 16.4 LTS of hoger voor zowel beheerde Iceberg-tabellen als externe Iceberg-tabellen.
Iceberg-tabellen maken in Unity Catalog
Iceberg-tabellen die u in Unity Catalog maakt, zijn beheerde Iceberg-tabellen. U kunt deze tabellen maken met behulp van:
- Databricks Runtime of Databricks SQL
- Externe Iceberg-compatibele engines die ondersteuning bieden voor de Iceberg REST Catalog-API, zoals Apache Spark, Flink, Trino of Kafka. Zie Access Azure Databricks tabellen van Apache Iceberg-clients.
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 bewerkingen om de opslagkosten te verlagen en de querysnelheid te verbeteren.
- Beheerde Iceberg-tabellen ondersteunen ook gematerialiseerde weergaven en streamingtabellen.
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 Beperkingen.
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
De volgende beperkingen zijn van toepassing op Iceberg-tabellen in Azure Databricks en kunnen worden gewijzigd:
- Iceberg-tabellen ondersteunen alleen de Apache Parquet-bestandsindeling.
- Voor Iceberg v2 worden verwijderingen van posities en op gelijkheid gebaseerde verwijderingen 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
BINARYtype wordt niet ondersteund.
- Weergaven zijn niet toegankelijk vanuit externe Iceberg-engines.
- De volgende gegevenstypen worden niet ondersteund:
UUIDFixed(L)TIME- Ingebed
STRUCTmet vereiste velden
- Zie Beperkingen voor beperkingen die specifiek zijn voor Iceberg v3.
Beperkingen voor beheerde Iceberg-tabellen
De volgende beperkingen gelden specifiek voor beheerde Iceberg-tabellen:
- Vectorzoekopdrachten worden niet ondersteund. Zie Vector Search.
- Als u beheerde Iceberg-tabellen gebruikt als bron voor gesynchroniseerde tabellen voor Lakebase, wordt incrementele verwerking met automatische wijzigingengegevensfeed niet ondersteund.
- 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.implwrite.data.pathwrite.metadata.pathwrite.format.defaultwrite.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-tabellenALL PRIVILEGES.