Hur hanterar Azure Databricks Delta Lake-funktionskompatibilitet?

Delta Lake är ett oberoende projekt med öppen källkod under styrning av Linux Foundation. Databricks introducerar stöd för nya Delta Lake-funktioner och optimeringar som bygger på Delta Lake i Databricks Runtime-versioner.

Azure Databricks-optimeringar som utnyttjar Delta Lake-funktioner respekterar de protokoll som används i OSS Delta Lake för kompatibilitet.

Många Azure Databricks-optimeringar kräver aktivering av Delta Lake-funktioner i en tabell. Delta Lake-funktioner är alltid bakåtkompatibla, så tabeller som skrivits av en lägre Databricks Runtime-version kan alltid läsas och skrivas av en högre Databricks Runtime-version. Om du aktiverar vissa funktioner bryts kompatibiliteten framåt med arbetsbelastningar som körs i en lägre Databricks Runtime-version. För funktioner som bryter kompatibiliteten framåt måste du uppdatera alla arbetsbelastningar som refererar till de uppgraderade tabellerna så att de använder en kompatibel Databricks Runtime-version.

Kommentar

Du kan släppa deletionVectors och v2Checkpoint på Azure Databricks. Se Drop Delta table features (Ta bort deltatabellfunktioner).

Viktigt!

Alla protokolländringsåtgärder står i konflikt med alla samtidiga skrivningar.

Direktuppspelningsläsningar misslyckas när de påträffar en incheckning som ändrar tabellmetadata. Om du vill att strömmen ska fortsätta måste du starta om den. Rekommenderade metoder finns i Produktionsöverväganden för strukturerad direktuppspelning.

Vilka Delta Lake-funktioner kräver Databricks Runtime-uppgraderingar?

Följande Delta Lake-funktioner bryter framåtkompatibiliteten. Funktioner aktiveras tabell för tabell. Den här tabellen visar den lägsta Databricks Runtime-versionen som fortfarande stöds av Azure Databricks.

Funktion Kräver Databricks Runtime-version eller senare Dokumentation
CHECK Begränsningar Databricks Runtime 9.1 LTS Ange en CHECK-begränsning i Azure Databricks
Ändra dataflöde Databricks Runtime 9.1 LTS Använda Delta Lake-ändringsdataflöde i Azure Databricks
Genererade kolumner Databricks Runtime 9.1 LTS Delta Lake-genererade kolumner
Kolumnmappning Databricks Runtime 10.4 LTS Byt namn på och släpp kolumner med Delta Lake-kolumnmappning
Identitetskolumner Databricks Runtime 10.4 LTS Använda identitetskolumner i Delta Lake
Tabellfunktioner Databricks Runtime 12.1 (stöds inte) Vad är tabellfunktioner?
Borttagningsvektorer Databricks Runtime 12.1 (stöds inte) Vad är borttagningsvektorer?
TidsstämpelNTZ Databricks Runtime 13.0 (stöds inte) TIMESTAMP_NTZ typ
Enhetlig Databricks Runtime 13.2 (stöds inte) Använda UniForm för att läsa deltatabeller med Iceberg-klienter
Flytande klustring Databricks Runtime 13.3 LTS Använda flytande klustring för Delta-tabeller

Se Viktig information om versioner och kompatibilitet för Databricks Runtime.

Kommentar

Delta Live Tables och Databricks SQL uppgraderar automatiskt körningsmiljöer med regelbundna versioner för att stödja nya funktioner. Se Viktig information om Delta Live Tables och versionsuppgraderingsprocessen och Viktig information om Databricks SQL.

Vad är en tabellprotokollspecifikation?

Varje Delta-tabell har en protokollspecifikation som anger den uppsättning funktioner som tabellen stöder. Protokollspecifikationen används av program som läser eller skriver tabellen för att avgöra om de kan hantera alla funktioner som tabellen stöder. Om ett program inte vet hur man hanterar en funktion som visas som stöds i protokollet i en tabell kan programmet inte läsa eller skriva tabellen.

Protokollspecifikationen är uppdelad i två komponenter: läsprotokollet och skrivprotokollet.

Varning

De flesta protokollversionsuppgraderingar är oåterkalleliga och uppgradering av protokollversionen kan bryta de befintliga Delta Lake-tabellläsarna, författarna eller båda. Databricks rekommenderar att du endast uppgraderar specifika tabeller när det behövs, till exempel för att välja nya funktioner i Delta Lake. Du bör också kontrollera att alla dina nuvarande och framtida produktionsverktyg stöder Delta Lake-tabeller med den nya protokollversionen.

Protokollnedgraderingar är tillgängliga för vissa funktioner. Se Drop Delta table features (Ta bort deltatabellfunktioner).

Läs protokoll

Läsprotokollet visar alla funktioner som en tabell stöder och som ett program måste förstå för att kunna läsa tabellen korrekt. Om du uppgraderar läsprotokollet i en tabell måste alla läsarprogram ha stöd för de tillagda funktionerna.

Viktigt!

Alla program som skriver till en Delta-tabell måste kunna skapa en ögonblicksbild av tabellen. Därför måste arbetsbelastningar som skriver till Delta-tabeller respektera både läsar- och skrivarprotokollkrav.

Om du stöter på ett protokoll som inte stöds av en arbetsbelastning i Azure Databricks måste du uppgradera till en högre Databricks Runtime som stöder det protokollet.

Skrivprotokoll

Skrivprotokollet visar alla funktioner som en tabell stöder och som ett program måste förstå för att kunna skriva till tabellen korrekt. Om du uppgraderar skrivprotokollet för en tabell måste alla skrivarprogram ha stöd för de tillagda funktionerna. Det påverkar inte skrivskyddade program, såvida inte läsprotokollet också uppgraderas.

Vilka protokoll måste uppgraderas?

Vissa funktioner kräver uppgradering av både läsprotokollet och skrivprotokollet. Andra funktioner kräver endast uppgradering av skrivprotokollet.

Till exempel är stöd för CHECK begränsningar en skrivprotokollfunktion: endast att skriva program behöver känna CHECK till begränsningar och framtvinga dem.

Kolumnmappning kräver däremot att både läs- och skrivprotokollen uppgraderas. Eftersom data lagras på olika sätt i tabellen måste läsarprogram förstå kolumnmappning så att de kan läsa data korrekt.

Lägsta läsare och skrivarversioner

Kommentar

Du måste explicit uppgradera tabellprotokollversionen när du aktiverar kolumnmappning.

När du aktiverar Delta-funktioner i en tabell uppgraderas tabellprotokollet automatiskt. Databricks rekommenderar att du inte ändrar minReaderVersion egenskaperna och minWriterVersion tabellen. Att ändra dessa tabellegenskaper förhindrar inte protokolluppgradering. Om du anger dessa värden till ett lägre värde nedgraderas inte tabellen. Se Drop Delta table features (Ta bort deltatabellfunktioner).

Vad är tabellfunktioner?

I Databricks Runtime 12.2 LTS och senare introducerar Delta Lake-tabellfunktioner detaljerade flaggor som anger vilka funktioner som stöds av en viss tabell. I Databricks Runtime 11.3 LTS och nedan aktiverades Delta Lake-funktioner i paket som kallas protokollversioner. Tabellfunktioner är efterföljaren till protokollversioner och är utformade med målet att förbättra flexibiliteten för klienter som läser och skriver Delta Lake. Se Vad är en protokollversion?.

Kommentar

Tabellfunktioner har krav på protokollversion. Se Funktioner efter protokollversion.

En Delta-tabellfunktion är en markör som anger att tabellen stöder en viss funktion. Varje funktion är antingen en funktion för skrivprotokoll (vilket innebär att den endast uppgraderar skrivprotokollet) eller en läs-/skrivprotokollfunktion (vilket innebär att både läs- och skrivprotokoll uppgraderas för att aktivera funktionen).

Mer information om tabellfunktioner som stöds i Delta Lake finns i Delta Lake-protokollet.

Ändrar tabellfunktionerna hur Delta Lake-funktioner aktiveras?

Om du bara interagerar med Delta-tabeller via Azure Databricks kan du fortsätta att spåra stöd för Delta Lake-funktioner med hjälp av minimikraven för Databricks Runtime. Azure Databricks stöder läsning av Delta-tabeller som har uppgraderats till tabellfunktioner i alla Databricks Runtime LTS-versioner, så länge alla funktioner som används av tabellen stöds av den versionen.

Om du läser och skriver från Delta-tabeller med andra system kan du behöva överväga hur tabellfunktioner påverkar kompatibiliteten, eftersom det finns en risk att systemet inte kan förstå de uppgraderade protokollversionerna.

Viktigt!

Tabellfunktioner introduceras i Delta Lake-formatet för skrivarversion 7 och läsarversion 3. Azure Databricks har backporterat kod till alla Databricks Runtime LTS-versioner som stöds för att lägga till stöd för tabellfunktioner, men endast för de funktioner som redan stöds i databricks-körningen. Det innebär att även om du kan välja att använda tabellfunktioner för att aktivera genererade kolumner och fortfarande arbeta med dessa tabeller i Databricks Runtime 9.1 LTS, stöds tabeller med identitetskolumner aktiverade (vilket kräver Databricks Runtime 10.4 LTS) fortfarande inte i databricks-körningen.

Vad är en protokollversion?

En protokollversion är ett protokollnummer som anger en viss gruppering av tabellfunktioner. I Databricks Runtime 11.3 LTS och nedan kan du inte aktivera tabellfunktioner individuellt. Protokollversioner paket en grupp med funktioner.

Deltatabeller anger en separat protokollversion för läsprotokoll och skrivprotokoll. Transaktionsloggen för en Delta-tabell innehåller information om protokollversioner som stöder Delta Lake-utveckling. Mer information finns i Granska Delta Lake-tabellinformation med beskrivande information.

Protokollversionerna paketar alla funktioner från tidigare protokoll. Se Funktioner efter protokollversion.

Kommentar

Från och med skrivarversion 7 och läsarversion 3 har Delta Lake introducerat begreppet tabellfunktioner. Med hjälp av tabellfunktioner kan du nu välja att endast aktivera de funktioner som stöds av andra klienter i ditt dataekosystem. Se Vad är tabellfunktioner?.

Funktioner efter protokollversion

I följande tabell visas lägsta protokollversioner som krävs för Delta Lake-funktioner.

Kommentar

Om du bara bryr dig om Databricks Runtime-kompatibilitet kan du läsa Vilka Delta Lake-funktioner kräver Databricks Runtime-uppgraderingar?. Deltadelning stöder endast läsning av tabeller med funktioner som kräver minReaderVersion = 1.

Egenskap minWriterVersion minReaderVersion Dokumentation
Grundläggande funktioner 2 1 Vad är Delta Lake?
CHECK Begränsningar 3 1 Ange en CHECK-begränsning i Azure Databricks
Ändra dataflöde 4 1 Använda Delta Lake-ändringsdataflöde i Azure Databricks
Genererade kolumner 4 1 Delta Lake-genererade kolumner
Kolumnmappning 5 2 Byt namn på och släpp kolumner med Delta Lake-kolumnmappning
Identitetskolumner 6 2 Använda identitetskolumner i Delta Lake
Läs tabellfunktioner 7 1 Vad är tabellfunktioner?
Skriv av tabellfunktioner 7 3 Vad är tabellfunktioner?
Borttagningsvektorer 7 3 Vad är borttagningsvektorer?
TidsstämpelNTZ 7 3 TIMESTAMP_NTZ typ
Flytande klustring 7 3 Använda flytande klustring för Delta-tabeller
Enhetlig 7 2 Använda UniForm för att läsa deltatabeller med Iceberg-klienter