Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Apache Iceberg is een opensource-tabelindeling voor analyseworkloads die ondersteuning bieden voor 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
Als u beheerde of externe Apache Iceberg-tabellen wilt gebruiken, moet u aan de volgende vereisten voldoen:
- Gebruik een werkruimte waarvoor Unity Catalog is ingeschakeld.
- Gebruik Databricks Runtime 16.4 LTS of hoger.
Voor beheerde tabellen moet u ook voldoen aan de volgende vereiste:
- Een werkruimte waarvoor serverloze rekenkracht is ingeschakeld
Azure Databricks maakt gebruik van serverloze berekeningen om metagegevens van icebergtabellen voor beheerde tabellen te onderhouden. Serverloze rekenkracht moet netwerkverbinding hebben met het cloudopslagaccount dat de tabel ondersteunt. Als een firewall het opslagaccount beveiligt, configureert u serverloze netwerkconnectiviteit zodat serverloze rekenkracht het kan bereiken. De vereiste installatie is afhankelijk van uw cloud. Zie Serverloze rekenvlaknetwerken voor meer informatie.
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.
- Liquid clustering verbetert de queryprestaties.
- Voorspellende optimalisatie automatiseert bewerkingen om de opslagkosten te verlagen en de querysnelheid te verbeteren.
- gematerialiseerde weergaven ondersteunen incrementele vernieuwing om resultaten actueel te houden als de brongegevens veranderen.
- streamingtabellen ondersteunen incrementeel laden van gegevens uit Kafka en cloudobjectopslag met behulp van Databricks SQL.
Databricks raadt aan om Iceberg-clientversie 1.9.2 en hoger te gebruiken 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.
Beheerde Iceberg-tabellen klonen
U kunt een volledige, onafhankelijke kopie van een beheerde Iceberg-tabel maken met behulp van DEEP CLONE. Een volledige kloon kopieert de gegevensbestanden en metagegevens van de tabel naar een nieuwe beheerde Iceberg-tabel in Unity Catalog. Zie Een beheerde Iceberg-tabel klonen.
Een gerealiseerde weergave maken die compatibel is met externe Iceberg-lezers
Important
Beheerde Iceberg-gematerialiseerde weergaven zijn in Openbare preview. Als u deze functie wilt inschakelen, neemt u contact op met uw Databricks-accountteam.
U kunt een gerealiseerde weergave maken die compatibel is met externe Iceberg-lezers. Als u er een wilt maken, gebruikt u USING ICEBERG in de CREATE MATERIALIZED VIEW instructie. Zie (pijplijnen) voor de volledige syntaxisCREATE MATERIALIZED VIEW. Zie Externe gegevenstoegang tot streamingtabellen en gerealiseerde weergaven inschakelen voor volledige vereisten.
CREATE MATERIALIZED VIEW <mv_name>
USING ICEBERG
AS
SELECT * FROM samples.nyctaxi.trips;
Nadat u de gematerialiseerde weergave hebt gemaakt, voert u REPAIR TABLE uit met SYNC METADATA. Zie REPAIR TABLE.
REPAIR TABLE <mv_name> SYNC METADATA;
Externe Iceberg-lezers kunnen de gerealiseerde weergave lezen, maar kunnen er niet naar schrijven. Raadpleeg Externe gegevenstoegang tot streamingtabellen en gematerialiseerde weergaven inschakelen om de gematerialiseerde weergave met een externe Iceberg-lezer te lezen.
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:
- AI Search wordt niet ondersteund. Zie Databricks AI 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.