Dela via


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 framåtkompatibiliteten med arbetsbelastningar som körs i en lägre version av Databricks Runtime. 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.

Anteckning

Du kan släppa deletionVectors, v2Checkpoint, columnMapping, typeWidening-previewoch collations-preview på Azure Databricks. Se funktioner för att ta bort Delta-tabellen.

Viktigt!

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

Strömmande läsningar misslyckas när de stöter på en commit-beslut 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 funktioner i Delta Lake påverkar framtida kompatibilitet. 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.2 LTS Vad är tabellfunktioner?
Borttagningsvektorer Databricks Runtime 12.2 LTS Vad är borttagningsvektorer?
Tidsstämpel NTZ Databricks Runtime 13.3 LTS TIMESTAMP_NTZ typ
Uniform Databricks Runtime 13.3 LTS Läs Delta-tabeller med Iceberg-klienter
Flytande klustring Databricks Runtime 13.3 LTS Använd flytande klustring för Delta-tabeller
Radspårning Databricks Runtime 14.1 Använda radspårning för Delta-tabeller
Typbreddning Databricks Runtime 15.2 Typbreddning
Variant Databricks Runtime 15.3 Variantstöd i Delta Lake
Kollationeringar Databricks Runtime 16.1 Sorteringsstöd för Delta Lake

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

Anteckning

DLT och Databricks SQL uppgraderar automatiskt körningsmiljöer med regelbundna versioner för att stödja nya funktioner. Se DLT versionsanteckningar och versionsuppgraderingsprocessen och Databricks SQL versionsanteckningar.

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-tabelläsarna, skrivarna 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 funktioner för att ta bort Delta-tabellen.

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.

Skriv protokoll

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 applikationer, 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 skrivapplikationer behöver känna till CHECK-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

Anteckning

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 och minWriterVersion tabellegenskaper. Att ändra dessa tabellegenskaper förhindrar inte protokolluppgradering. Om du anger dessa värden till ett lägre värde nedgraderas inte tabellen. Se funktioner för att ta bort Delta-tabellen.

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 samlar en grupp 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. Se Se över detaljinformation för Delta Lake-tabell med beskrivning av detaljer.

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

Anteckning

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
Funktioner för att läsa av tabellegenskaper 7 1 Vad är tabellfunktioner?
Tabellfunktioner för att skriva 7 3 Vad är tabellfunktioner?
Radspårning 7 1 Använda radspårning för Delta-tabeller
Borttagningsvektorer 7 3 Vad är borttagningsvektorer?
TidsstämpelNTZ 7 3 TIMESTAMP_NTZ typ
Flytande klustring 7 3 Använd flytande klustring för Delta-tabeller
Uniform 7 2 Läsa Delta-tabeller med Iceberg-klienter
Typbreddning 7 3 Typutvidgning
Variant 7 3 Variantstöd i Delta Lake
Kollationeringar 7 3 Sorteringsstöd för Delta Lake