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.
Met Iceberg-leesbewerkingen in Databricks Runtime 14.3 LTS en hoger kunt u Delta Lake-tabellen configureren om automatisch Iceberg-metagegevens te genereren, zodat Iceberg-clients Delta Lake-gegevens kunnen lezen zonder bestanden opnieuw te schrijven.
U kunt een externe verbinding configureren om Unity Catalog als een Iceberg-catalogus te laten fungeren. Zie Toegang tot Azure Databricks-tabellen van Apache Iceberg-clients.
Hoe Iceberg gegevens leest
Zowel Delta Lake als Apache Iceberg bestaan uit Parquet-gegevensbestanden en een metagegevenslaag. Als u Iceberg-leesbewerkingen inschakelt, worden uw Delta Lake-tabellen zo geconfigureerd dat ze automatisch asynchroon icebergmetagegevens genereren zonder gegevens te herschrijven, zodat Iceberg-clients deze kunnen lezen. Eén kopie van de gegevensbestanden ondersteunt meerdere indelingen.
Wanneer u Iceberg-lezingen gebruikt, houd dan rekening met het volgende:
- Delta Lake-tabellen met Iceberg-leesbewerkingen gebruiken Zstandard in plaats van Snappy als de compressiecodec voor onderliggende Parquet-gegevensbestanden.
- Het genereren van icebergmetagegevens wordt asynchroon uitgevoerd op de berekening die wordt gebruikt voor het schrijven van gegevens naar Delta Lake-tabellen, waardoor het resourcegebruik van stuurprogramma's kan toenemen.
Zie IcebergCompatV1 voor documentatie over de verouderde UniForm-tabelfunctie.
Behoeften
Om Iceberg-lezen in te schakelen, moet aan de volgende vereisten worden voldaan:
- De Delta Lake-tabel moet worden geregistreerd bij Unity Catalog. Zowel beheerde als externe tabellen worden ondersteund.
- Voor de tabel moet kolomtoewijzing zijn ingeschakeld. Zie Kolommen hernoemen en verwijderen met kolomtoewijzing van Delta Lake.
- Nadat
IcebergCompatV2is ingeschakeld voor een tabel, kunt u de tabelfunctiecolumnMappingniet laten vallen.
- Nadat
- De Delta Lake-tabel moet een
minReaderVersion>= 2 enminWriterVersion>= 7 hebben. Bekijk de compatibiliteit en protocollen van Delta Lake-functies. - Schrijfbewerkingen naar de tabel moeten Databricks Runtime 14.3 LTS of hoger gebruiken.
Notitie
U kunt verwijderingsvectoren in een tabel niet inschakelen met Iceberg-leesbewerkingen ingeschakeld.
Gebruik REORG om verwijderingsvectoren uit te schakelen en op te schonen, en tegelijkertijd Iceberg-leesbewerkingen in te schakelen voor een bestaande tabel waarvoor verwijderingsvectoren zijn ingeschakeld. Zie Leesondersteuning voor Iceberg inschakelen of upgraden met behulp van REORG.
Iceberg-leesbewerkingen inschakelen (UniForm)
Notitie
Door leesbewerkingen voor Iceberg in te schakelen, wordt de functie IcebergCompatV2 voor het schrijfprotocol toegevoegd en wordt het schrijverprotocol bijgewerkt. Alleen clients die deze tabelfunctie ondersteunen, kunnen naar de tabel schrijven. Dit kan van invloed zijn op de compatibiliteit met externe Delta Lake-clients. Bekijk de compatibiliteit en protocollen van Delta Lake-functies.
Wanneer u Iceberg-leesbewerkingen voor het eerst inschakelt, begint het genereren van asynchrone metagegevens. Deze taak moet worden voltooid voordat externe clients een query kunnen uitvoeren op de tabel met behulp van Iceberg. Zie Status van IJsberg-metagegevensgeneratie controleren.
Zie Beperkingenvoor een lijst met beperkingen.
Tijdens het maken van een tabel
Kolomtoewijzing wordt automatisch ingeschakeld wanneer u Iceberg-lezen inschakelt bij het maken van een tabel:
CREATE TABLE T(c1 INT) TBLPROPERTIES(
'delta.columnMapping.mode' = 'id',
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg');
Databricks raadt u aan om deze in te stellen delta.columnMapping.mode = id voor compatibiliteitsdoeleinden. Zie Kolommen hernoemen en verwijderen met kolomtoewijzing van Delta Lake.
In een bestaande tabel
Iceberg-leesbewerkingen inschakelen voor een bestaande tabel in Databricks Runtime 15.4 LTS en hoger:
ALTER TABLE table_name SET TBLPROPERTIES(
'delta.columnMapping.mode' = 'name',
'delta.enableIcebergCompatV2' = 'true',
'delta.universalFormat.enabledFormats' = 'iceberg');
Zie name voor meer informatie over de modus voor kolomtoewijzing.
Leesondersteuning voor Iceberg inschakelen of upgraden met behulp van REORG
Gebruik REORG dit om Iceberg-leesbewerkingen in te schakelen als een van de volgende voorwaarden waar is:
- U hebt verwijderingsvectoren ingeschakeld voor uw tabel.
- U hebt eerder de
IcebergCompatV1versie van UniForm Iceberg ingeschakeld. - U moet gebruik maken van Iceberg-engines die geen ondersteuning bieden voor Parquet-bestanden in Hive-stijl, zoals Athena of Redshift.
Als u Iceberg-leesbewerkingen wilt inschakelen en onderliggende gegevensbestanden wilt herschrijven, gebruikt u REORG zoals in het volgende voorbeeld:
REORG TABLE table_name APPLY (UPGRADE UNIFORM(ICEBERG_COMPAT_VERSION=2));
Controleer of iceberg-leesbewerkingen zijn ingeschakeld
Gebruik DESCRIBE EXTENDED om te controleren of Iceberg-leesbewerkingen (UniForm) zijn ingeschakeld voor uw tabel.
DESCRIBE EXTENDED catalog_name.schema_name.table_name;
Zoek in de uitvoer naar het gedeelte Delta Uniform Iceberg. Als deze sectie aanwezig is, worden leesbewerkingen van Iceberg ingeschakeld in uw tabel.
U kunt ook het volgende gebruiken SHOW TBLPROPERTIES:
SHOW TBLPROPERTIES catalog_name.schema_name.table_name;
Controleer op de volgende eigenschappen:
delta.enableIcebergCompatV2 = truedelta.universalFormat.enabledFormats = iceberg
Als beide eigenschappen aanwezig zijn met deze waarden, worden leesbewerkingen van Iceberg ingeschakeld.
Iceberg-leesbewerkingen uitschakelen
U kunt Iceberg-leesbewerkingen uitschakelen door de delta.universalFormat.enabledFormats tabeleigenschap uit te schakelen:
ALTER TABLE table_name UNSET TBLPROPERTIES ('delta.universalFormat.enabledFormats');
Upgrades naar delta lake-lezer- en schrijfprotocolversies kunnen niet ongedaan worden gemaakt. Bekijk de compatibiliteit en protocollen van Delta Lake-functies.
IJsberg-metagegevens genereren
Azure Databricks activeert het genereren van metagegevens asynchroon nadat een Delta Lake-schrijftransactie is voltooid. Dit proces voor het genereren van metagegevens maakt gebruik van dezelfde berekening die de Delta Lake-transactie heeft voltooid.
U kunt ook het genereren van iceberg-metagegevens handmatig activeren. Zie Handmatig iceberg-metagegevensconversie activeren.
Om schrijflatenties te voorkomen die zijn gekoppeld aan het genereren van metagegevens, kunnen Delta Lake-tabellen met frequente doorvoeringen meerdere Delta Lake-doorvoeringen groeperen in één doorvoering naar Iceberg-metagegevens.
Delta Lake zorgt ervoor dat slechts één proces voor het genereren van metagegevens wordt uitgevoerd op een bepaalde rekenresource. Commits die een tweede gelijktijdig proces voor het genereren van metadata zouden starten, worden met succes vastgelegd in Delta Lake, maar starten geen asynchrone generatie van Iceberg-metadata. Dit voorkomt trapsgewijze latentie voor het genereren van metagegevens voor workloads met frequente doorvoeringen (seconden tot minuten tussen doorvoeringen).
Zie Delta- en Iceberg-tabelversies.
Delta- en Iceberg-tabelversies
Delta Lake en Iceberg staan query's voor tijdreizen toe met behulp van tabelversies of tijdstempels die zijn opgeslagen in tabelmetagegevens.
Delta Lake-tabelversies komen niet noodzakelijk overeen met Iceberg-versies, op basis van zowel de commit-tijdstempel als de versie-ID. Als u wilt controleren met welke versie van een Delta Lake-tabel een bepaalde versie van een Iceberg-tabel overeenkomt, gebruikt u de bijbehorende tabeleigenschappen. Zie Status van IJsberg-metagegevensgeneratie controleren.
Status van het genereren van IJsberg-metagegevens controleren
Als u Iceberg-leesbewerkingen voor een tabel inschakelt, worden de volgende velden toegevoegd aan metagegevens van unity-catalogus- en icebergtabellen om de status van het genereren van metagegevens bij te houden:
| Metagegevensveld | Beschrijving |
|---|---|
converted_delta_version |
De nieuwste versie van de Delta Lake-tabel waarvoor Iceberg-metagegevens succesvol zijn gegenereerd. |
converted_delta_timestamp |
De tijdstempel van de meest recente Delta Lake-commit waarvoor de Iceberg-metagegevens succesvol zijn gegenereerd. |
In Azure Databricks kunt u deze metagegevensvelden controleren door een van de volgende handelingen uit te voeren:
- De sectie
Delta Uniform Icebergcontroleren die wordt geretourneerd doorDESCRIBE EXTENDED table_name. - Tabelmetagegevens controleren met Catalog Explorer.
Raadpleeg de documentatie voor uw Iceberg-lezerclient voor het controleren van tabeleigenschappen buiten Azure Databricks. Voor OSS Apache Spark ziet u deze eigenschappen met behulp van de volgende syntaxis:
SHOW TBLPROPERTIES <table-name>;
Iceberg-metagegevensconversie handmatig activeren
U kunt het genereren van metagegevens van Iceberg handmatig activeren voor de nieuwste versie van de Delta Lake-tabel. Deze bewerking wordt synchroon uitgevoerd. Wanneer deze is voltooid, geeft de inhoud van de tabel die beschikbaar is in Iceberg de nieuwste versie van de Delta Lake-tabel weer die beschikbaar is wanneer het conversieproces is gestart.
Deze bewerking is niet nodig onder normale omstandigheden. Gebruik deze om te herstellen van het volgende:
- Een cluster wordt beëindigd voordat het automatisch genereren van metagegevens slaagt.
- Een fout of taakfout onderbreekt het genereren van metagegevens.
- Een client die het genereren van UniForm Iceberg-metagegevens niet ondersteunt, schrijft naar de Delta Lake-tabel.
Gebruik de volgende syntaxis om het genereren van metagegevens van Iceberg handmatig te activeren:
MSCK REPAIR TABLE <table-name> SYNC METADATA
Zie REPAIR TABLE.
Iceberg lezen met behulp van een JSON-pad naar metagegevens
Voor sommige Iceberg-clients, zoals BigQuery, moet u een pad opgeven naar bestanden met versies van metagegevens om externe Iceberg-tabellen te registreren. Telkens wanneer Azure Databricks een nieuwe versie van de Delta Lake-tabel converteert naar Iceberg, wordt er een nieuw JSON-bestand met metagegevens gemaakt.
Raadpleeg de documentatie voor uw specifieke Iceberg Reader-client voor meer informatie over de configuratie.
Delta Lake slaat metagegevens van Iceberg op onder de tabelmap met behulp van het volgende patroon:
<table-path>/metadata/<version-number>-<uuid>.metadata.json
In Azure Databricks kunt u deze metagegevenslocatie controleren door een van de volgende handelingen uit te voeren:
- De sectie
Delta Uniform Icebergcontroleren die wordt geretourneerd doorDESCRIBE EXTENDED table_name. - Tabelmetagegevens controleren met Catalog Explorer.
Belangrijk
Op pad gebaseerde Iceberg-lezerclients vereisen mogelijk handmatig het bijwerken en vernieuwen van JSON-paden voor metagegevens om de huidige tabelversies te lezen. Gebruikers kunnen fouten tegenkomen bij het uitvoeren van query's op Iceberg-tabellen met verouderde versies, omdat Parquet-gegevensbestanden worden verwijderd uit de Delta Lake-tabel met VACUUM.
VACUUM en het opschonen van Iceberg-metagegevens
Vanaf Databricks Runtime 17.2 verwijdert de VACUUM opdracht niet-bijgehouden bestanden onder de map UniForm metadata/ en behoudt de Iceberg-metagegevens die nog steeds bereikbaar zijn.
De UniForm-conversie voert het verlopen van Iceberg-snapshots intern uit, maar gebruikt standaard cleanExpiredFiles(false). Als gevolg hiervan maken OPTIMIZE en reguliere UniForm-conversie oude Iceberg-metagegevens alleen onbereikbaar — ze verwijderen die niet fysiek.
Als u onbereikbare Iceberg-metagegevens fysiek wilt verwijderen, voert u FULL VACUUM uit nadat de delta.deletedFileRetentionDuration retentieperiode is verstreken. Zie Gegevensretentie configureren voor tijdreis-query's.
Als voorspellende optimalisatie is ingeschakeld, verwerkt Databricks deze opschoonactie automatisch, zodat u niet handmatig FULL VACUUM hoeft uit te voeren voor het opschonen van metagegevens van Iceberg.
Beperkingen
De volgende beperkingen gelden voor alle tabellen waarvoor Iceberg-leesbewerkingen zijn ingeschakeld:
- De ondersteuning van Iceberg-clients is alleen lezen. Schrijven wordt niet ondersteund.
- IJsberglezerclients hebben mogelijk afzonderlijke beperkingen, ongeacht Azure Databricks-ondersteuning voor Iceberg-lezen. Raadpleeg de documentatie voor de door u gekozen client.
- Verwijderingsvectoren worden niet ondersteund voor Iceberg v2-leesbewerkingen. Apache Iceberg v3 ondersteunt echter verwijderingsvectoren. Zie Apache Iceberg v3-functies en verwijderingsvectoren gebruiken in Databricks.
- Iceberg-leesbewerkingen kunnen niet worden ingeschakeld voor gematerialiseerde weergaven of streamingtabellen met
IcebergCompatV2. Voor door pipelines beheerde gematerialiseerde weergaven en streamingtabellen kunt u externe Iceberg-toegang in plaats daarvan inschakelen met behulp vanIcebergCompatV3. Deze functie bevindt zich in openbare preview-versie. Zie Externe gegevenstoegang tot streamingtabellen en gerealiseerde weergaven inschakelen. - De Delta Lake-tabel moet worden geopend op naam (geen pad) om het genereren van metagegevens van Iceberg automatisch te activeren.
- Delta Lake-tabellen waarvoor Iceberg-leesbewerkingen zijn ingeschakeld, bieden geen ondersteuning voor
VOIDtypen. - Sommige Delta Lake-tabelfuncties die door Iceberg-leesbewerkingen worden gebruikt, worden niet ondersteund door sommige OpenSharing-lezerclients. Zie Wat is OpenSharing?
- Ontvangers van OpenSharing kunnen Delta Lake-tabellen waarvoor Iceberg-lezen is ingeschakeld, als Iceberg-tabellen lezen via de Iceberg REST Catalog API. Deze functie bevindt zich in openbare preview-versie. Zie Delen inschakelen voor externe Iceberg-clients.
- De oude feed voor wijzigingsgegevens werkt voor Delta-clients wanneer Iceberg-lezen is ingeschakeld, maar wordt niet ondersteund in Iceberg. Zie de verouderde wijzigingsgegevensfeed voor Delta Lake.