Hoe beheert Azure Databricks de compatibiliteit van Delta Lake-functies?

Delta Lake is een onafhankelijk opensource-project onder het beheer van de Linux Foundation. Databricks introduceert ondersteuning voor nieuwe Delta Lake-functies en -optimalisaties die zijn gebaseerd op Delta Lake in Databricks Runtime-releases.

Azure Databricks-optimalisaties die gebruikmaken van Delta Lake-functies, respecteren de protocollen die worden gebruikt in OSS Delta Lake voor compatibiliteit.

Veel Azure Databricks-optimalisaties vereisen het inschakelen van Delta Lake-functies voor een tabel. Delta Lake-functies zijn altijd achterwaarts compatibel, zodat tabellen die zijn geschreven door een lagere Databricks Runtime-versie altijd kunnen worden gelezen en geschreven door een hogere Databricks Runtime-versie. Als u sommige functies inschakelt, wordt de voorwaartse compatibiliteit met workloads die in een lagere Databricks Runtime-versie worden uitgevoerd, verbroken. Voor functies die voorwaartse compatibiliteit verbreken, moet u alle workloads die naar de bijgewerkte tabellen verwijzen, bijwerken om een compatibele Databricks Runtime-versie te gebruiken.

Notitie

U kunt Azure Databricks neerzetten deletionVectors en v2Checkpoint gebruiken. Zie Delta-tabelfuncties neerzetten.

Belangrijk

Alle protocolwijzigingsbewerkingen conflicteren met alle gelijktijdige schrijfbewerkingen.

Streaming-leesbewerkingen mislukken wanneer ze een doorvoer tegenkomen die metagegevens van de tabel wijzigt. Als u wilt dat de stream wordt voortgezet, moet u deze opnieuw starten. Zie Productieoverwegingen voor Gestructureerd streamen voor aanbevolen methoden.

Voor welke Delta Lake-functies zijn Databricks Runtime-upgrades vereist?

De volgende Delta Lake-functies bieden een aparte compatibiliteit. Functies zijn per tabel ingeschakeld. Deze tabel bevat de laagste Databricks Runtime-versie die nog steeds wordt ondersteund door Azure Databricks.

Functie Vereist databricks Runtime-versie of hoger Documentatie
CHECK Beperkingen Databricks Runtime 9.1 LTS Een CHECK-beperking instellen in Azure Databricks
Gegevensfeed wijzigen Databricks Runtime 9.1 LTS Delta Lake-wijzigingenfeed gebruiken in Azure Databricks
Gegenereerde kolommen Databricks Runtime 9.1 LTS Door Delta Lake gegenereerde kolommen
Toewijzen van kolommen Databricks Runtime 10.4 LTS De naam van kolommen wijzigen en neerzetten met delta lake-kolomtoewijzing
Identiteitskolommen Databricks Runtime 10.4 LTS Identiteitskolommen gebruiken in Delta Lake
Tabelfuncties Databricks Runtime 12.1 (niet ondersteund) Wat zijn tabelfuncties?
Verwijderingsvectoren Databricks Runtime 12.1 (niet ondersteund) Wat zijn verwijderingsvectoren?
TijdstempelNTZ Databricks Runtime 13.0 (niet ondersteund) TIMESTAMP_NTZ type
Uniforme Databricks Runtime 13.2 (niet ondersteund) Universal Format (UniForm) voor icebergcompatibiliteit met Delta-tabellen
Liquid clustering Databricks Runtime 13.3 LTS Liquid clustering gebruiken voor Delta-tabellen

Zie de releaseversies en compatibiliteit van Databricks Runtime.

Notitie

Delta Live Tables en Databricks SQL upgraden automatisch runtime-omgevingen met regelmatige releases ter ondersteuning van nieuwe functies. Zie releaseopmerkingen voor Delta Live Tables en het release-upgradeproces en opmerkingen bij de release van Databricks SQL.

Wat is een tabelprotocolspecificatie?

Elke Delta-tabel heeft een protocolspecificatie die de set functies aangeeft die door de tabel worden ondersteund. De protocolspecificatie wordt gebruikt door toepassingen die de tabel lezen of schrijven om te bepalen of ze alle functies kunnen verwerken die door de tabel worden ondersteund. Als een toepassing niet weet hoe een functie moet worden verwerkt die wordt vermeld als ondersteund in het protocol van een tabel, kan die toepassing die tabel niet lezen of schrijven.

De protocolspecificatie is onderverdeeld in twee onderdelen: het leesprotocol en het schrijfprotocol.

Waarschuwing

De meeste upgrades van protocolversies kunnen niet ongedaan worden genomen en het upgraden van de protocolversie kan de bestaande Delta Lake-tabellezers, schrijvers of beide verbreken. Databricks raadt u aan om specifieke tabellen alleen bij te werken wanneer dat nodig is, zoals aanmelden voor nieuwe functies in Delta Lake. Controleer ook of al uw huidige en toekomstige productiehulpprogramma's Delta Lake-tabellen ondersteunen met de nieuwe protocolversie.

Protocol downgrades zijn beschikbaar voor sommige functies. Zie Delta-tabelfuncties neerzetten.

Leesprotocol

Het leesprotocol bevat alle functies die een tabel ondersteunt en die een toepassing moet begrijpen om de tabel correct te kunnen lezen. Als u het leesprotocol van een tabel bijwerken, moeten alle lezertoepassingen de toegevoegde functies ondersteunen.

Belangrijk

Alle toepassingen die naar een Delta-tabel schrijven, moeten een momentopname van de tabel kunnen maken. Als zodanig moeten workloads die naar Delta-tabellen schrijven zowel de lees- als schrijfprotocolvereisten respecteren.

Als u een protocol tegenkomt dat niet wordt ondersteund door een workload in Azure Databricks, moet u een upgrade uitvoeren naar een hogere Databricks Runtime die dat protocol ondersteunt.

Schrijfprotocol

Het schrijfprotocol bevat alle functies die een tabel ondersteunt en die een toepassing moet begrijpen om naar de tabel te schrijven. Voor het upgraden van het schrijfprotocol van een tabel is vereist dat alle schrijftoepassingen de toegevoegde functies ondersteunen. Het heeft geen invloed op alleen-lezentoepassingen, tenzij het leesprotocol ook wordt bijgewerkt.

Welke protocollen moeten worden bijgewerkt?

Voor sommige functies is het upgraden van zowel het leesprotocol als het schrijfprotocol vereist. Voor andere functies is alleen een upgrade van het schrijfprotocol vereist.

Als voorbeeld is ondersteuning voor CHECK beperkingen een functie voor schrijfprotocol: alleen het schrijven van toepassingen hoeft te weten te komen over CHECK beperkingen en deze af te dwingen.

Kolomtoewijzing moet daarentegen zowel de lees- als schrijfprotocollen upgraden. Omdat de gegevens anders worden opgeslagen in de tabel, moeten lezertoepassingen de kolomtoewijzing begrijpen, zodat ze de gegevens correct kunnen lezen.

Minimale lezer- en schrijfversies

Notitie

U moet de tabelprotocolversie expliciet bijwerken bij het inschakelen van kolomtoewijzing.

Wanneer u Delta-functies voor een tabel inschakelt, wordt het tabelprotocol automatisch bijgewerkt. Databricks raadt aan om de eigenschappen van de tabel en minWriterVersion de minReaderVersion tabel te wijzigen. Als u deze tabeleigenschappen wijzigt, voorkomt u geen protocolupgrade. Als u deze waarden instelt op een lagere waarde, wordt de tabel niet gedowngraded. Zie Delta-tabelfuncties neerzetten.

Wat zijn tabelfuncties?

In Databricks Runtime 12.2 LTS en hoger introduceren Delta Lake-tabelfuncties gedetailleerde vlaggen die aangeven welke functies worden ondersteund door een bepaalde tabel. In Databricks Runtime 11.3 LTS en hieronder zijn Delta Lake-functies ingeschakeld in bundels die protocolversies worden genoemd. Tabelfuncties zijn de opvolger van protocolversies en zijn ontworpen met het doel van verbeterde flexibiliteit voor clients die Delta Lake lezen en schrijven. Zie Wat is een protocolversie?

Notitie

Tabelfuncties hebben vereisten voor protocolversies. Zie Functies per protocolversie.

Een Delta-tabelfunctie is een markering die aangeeft dat de tabel een bepaalde functie ondersteunt. Elke functie is een schrijfprotocolfunctie (wat betekent dat het alleen het schrijfprotocol bijwerken) of een lees-/schrijfprotocolfunctie (wat betekent dat zowel lees- als schrijfprotocollen worden bijgewerkt om de functie in te schakelen).

Zie het Delta Lake-protocol voor meer informatie over ondersteunde tabelfuncties in Delta Lake.

Veranderen tabelfuncties hoe Delta Lake-functies worden ingeschakeld?

Als u alleen communiceert met Delta-tabellen via Azure Databricks, kunt u ondersteuning voor Delta Lake-functies blijven volgen met behulp van minimale Databricks Runtime-vereisten. Azure Databricks biedt ondersteuning voor het lezen van Delta-tabellen die zijn bijgewerkt naar tabelfuncties in alle Databricks Runtime LTS-releases, zolang alle functies die door de tabel worden gebruikt, worden ondersteund door die release.

Als u deltatabellen leest en schrijft met behulp van andere systemen, moet u mogelijk rekening houden met de compatibiliteit van tabelfuncties, omdat er een risico bestaat dat het systeem de bijgewerkte protocolversies niet kan begrijpen.

Belangrijk

Tabelfuncties worden geïntroduceerd in de Delta Lake-indeling voor schrijverversie 7 en lezer versie 3. Azure Databricks heeft backported code naar alle ondersteunde Databricks Runtime LTS-versies om ondersteuning voor tabelfuncties toe te voegen, maar alleen voor die functies die al in die Databricks Runtime worden ondersteund. Dit betekent dat hoewel u ervoor kunt kiezen om tabelfuncties te gebruiken om gegenereerde kolommen in te schakelen en nog steeds te werken met deze tabellen in Databricks Runtime 9.1 LTS, worden tabellen waarvoor identiteitskolommen zijn ingeschakeld (waarvoor Databricks Runtime 10.4 LTS is vereist) nog steeds niet ondersteund in die Databricks Runtime.

Wat is een protocolversie?

Een protocolversie is een protocolnummer dat een bepaalde groepering van tabelfuncties aangeeft. In Databricks Runtime 11.3 LTS en hieronder kunt u tabelfuncties niet afzonderlijk inschakelen. Protocolversies bundelen een groep functies.

Delta-tabellen geven een afzonderlijke protocolversie op voor het leesprotocol en schrijfprotocol. Het transactielogboek voor een Delta-tabel bevat informatie over protocolversiebeheer die ondersteuning biedt voor Delta Lake-evolutie. Zie De details van de Delta Lake-tabel bekijken met een beschrijving.

De protocolversies bundelen alle functies van eerdere protocollen. Zie Functies per protocolversie.

Notitie

Vanaf writer versie 7 en lezer versie 3 heeft Delta Lake het concept van tabelfuncties geïntroduceerd. Met behulp van tabelfuncties kunt u er nu voor kiezen om alleen de functies in te schakelen die worden ondersteund door andere clients in uw gegevensecosysteem. Zie Wat zijn tabelfuncties?

Functies per protocolversie

In de volgende tabel ziet u de minimale protocolversies die vereist zijn voor Delta Lake-functies.

Notitie

Als u zich alleen bezig houdt met de compatibiliteit van Databricks Runtime, raadpleegt u welke Delta Lake-functies Databricks Runtime-upgrades vereisen?. Delta Sharing biedt alleen ondersteuning voor het lezen van tabellen met functies die vereist zijn minReaderVersion = 1.

Functie minWriterVersion minReaderVersion Documentatie
Basisfunctionaliteit 2 1 Wat is Delta Lake?
CHECK Beperkingen 3 1 Een CHECK-beperking instellen in Azure Databricks
Gegevensfeed wijzigen 4 1 Delta Lake-wijzigingenfeed gebruiken in Azure Databricks
Gegenereerde kolommen 4 1 Door Delta Lake gegenereerde kolommen
Toewijzen van kolommen 5 2 De naam van kolommen wijzigen en neerzetten met delta lake-kolomtoewijzing
Identiteitskolommen 6 2 Identiteitskolommen gebruiken in Delta Lake
Tabelfuncties gelezen 7 1 Wat zijn tabelfuncties?
Tabelfuncties schrijven 7 3 Wat zijn tabelfuncties?
Verwijderingsvectoren 7 3 Wat zijn verwijderingsvectoren?
TijdstempelNTZ 7 3 TIMESTAMP_NTZ type
Liquid clustering 7 3 Liquid clustering gebruiken voor Delta-tabellen
Uniforme 7 2 Universal Format (UniForm) voor icebergcompatibiliteit met Delta-tabellen