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 på en table. Delta Lake-funktioner är alltid bakåtkompatibla, så tables som skrivs 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 update alla arbetsbelastningar som refererar till den uppgraderade tables för att använda en kompatibel Databricks Runtime-version.

Kommentar

Du kan släppa deletionVectors, v2Checkpoint, columnMapping, typeWidening-previewoch collations-preview på Azure Databricks. Se Drop Delta table funktioner.

Viktigt!

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

Strömningsläsningar misslyckas när de stöter på en commit som ändrar metadata för table. 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 per table- ochtable-kombination. Den här table 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 Set en CHECK-constraint i Azure Databricks
Ändra dataflöde Databricks Runtime 9.1 LTS Använda Delta Lake-ändringsdataflöde i Azure Databricks
Genererade columns Databricks Runtime 9.1 LTS Delta Lake genererade columns
Column mappning Databricks Runtime 10.4 LTS Namnge om och ta bort columns med Delta Lake column mappning
Identitet columns Databricks Runtime 10.4 LTS Använd identitet columns i Delta Lake
Table funktioner Databricks Runtime 12.2 LTS Vad är table funktioner?
Borttagningsvektorer Databricks Runtime 12.2 LTS Vad är borttagningsvektorer?
TidsstämpelNTZ Databricks Runtime 13.3 LTS TIMESTAMP_NTZ typ
Uniform Databricks Runtime 13.3 LTS Läs Delta tables med Iceberg-klienter
Flytande klustring Databricks Runtime 13.3 LTS Använd flytande klustring för Delta tables
Radspårning Databricks Runtime 14.1 Använd radspårning för Delta tables
Typbreddning Databricks Runtime 15.2 Typbreddning
Variant Databricks Runtime 15.3 Variantstöd i Delta Lake
Kollationeringar Databricks Runtime 16.1 Sammanställningsstöd för Delta Lake

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 versionsinformation för Delta Live Tables och versionsuppgraderingsprocessen samt versionsinformation för Databricks SQL.

Vad är en table protokollspecifikation?

Varje Delta-table har en protokollspecifikation som anger set av funktioner som table stöder. Protokollspecifikationen används av program som läser eller skriver table för att avgöra om de kan hantera alla funktioner som table stöder. Om en applikation inte vet hur den ska hantera en funktion som anges som stödd i protokollet för en table, så kommer den applikationen inte att kunna läsa eller skriva den table.

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

Varning

De flesta protokollversionsuppgraderingar är oåterkalleliga, och uppgradering av protokollversionen kan bryta befintliga Delta Lake table läsare, skribenter eller båda. Databricks rekommenderar att du uppgraderar specifika tables endast 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 tables med den nya protokollversionen.

Protokollnedgraderingar är tillgängliga för vissa funktioner. Se Drop Delta table funktioner.

Läs protokoll

Läsprotokollet visar alla funktioner som en table stöder och som ett program måste förstå för att kunna läsa table korrekt. Uppgradering av läsprotokollet för en table kräver att alla läsarprogram stöder de tillagda funktionerna.

Viktigt!

Alla program som skriver till en Delta-table måste kunna skapa en ögonblicksbild av table. Därför måste arbetsbelastningar som skriver till Delta tables 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 table stöder och som ett program måste förstå för att kunna skriva till table korrekt. Uppgradering av skrivprotokollet för en table kräver att alla skrivarprogram stöder 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.

Däremot kräver column mappning att både läs- och skrivprotokollen uppgraderas. Eftersom data lagras på olika sätt i tablemåste läsarprogram förstå column mappning så att de kan läsa data korrekt.

Lägsta läsare och skrivarversioner

Kommentar

Du måste uttryckligen uppgradera table protokollversionen när du aktiverar column mappning.

När du aktiverar Delta-funktioner på en tableuppgraderas table-protokollet automatiskt. Databricks rekommenderar att du inte ändrar egenskaperna för minReaderVersion och minWriterVersiontable. Att ändra dessa table egenskaper förhindrar inte protokolluppgradering. Om du anger dessa values till ett lägre värde nedgraderas inte table. Se Drop Delta table funktioner.

Vilka är funktionerna i table?

I Databricks Runtime 12.2 LTS och senare ger Delta Lake table-funktionerna detaljerade flaggor som anger vilka funktioner som stöds av en viss table. I Databricks Runtime 11.3 LTS och nedan aktiverades Delta Lake-funktioner i paket som kallas protokollversioner. Table funktioner ä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

Table funktioner har krav på protokollversion. Se Funktioner efter protokollversion.

En Delta table-funktion är en markör som anger att table 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 de funktioner som stöds i Delta Lake table finns i Delta Lake-protokollet .

Ändrar table funktioner hur Delta Lake-funktioner aktiveras?

Om du bara interagerar med Delta tables 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 tables som har uppgraderats till table funktioner i alla Databricks Runtime LTS-versioner, förutsatt att alla funktioner som används av table stöds av den versionen.

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

Viktigt!

Table-funktioner introduceras i Delta Lake-formatet, för skrivarversion 7 och läsarversion 3. Azure Databricks har bakåtporterat kod till alla Databricks Runtime LTS-versioner som stöds för att lägga till stöd för table-funktioner, men endast för de funktioner som redan stöds i Databricks Runtime-. Det innebär att även om du kan välja att använda table funktioner för att aktivera genererade columns och fortfarande arbeta med dessa tables i Databricks Runtime 9.1 LTS, stöds tables med identitet columns aktiverat (vilket kräver Databricks Runtime 10.4 LTS) fortfarande inte i Databricks Runtime.

Vad är en protokollversion?

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

Delta tables ange en separat protokollversion för läsprotokoll och skrivprotokoll. Transaktionsloggen för en Delta-table innehåller information om protokollversioner som stöder Delta Lake-utveckling. Mer information finns i Granska Delta Lake table med detaljerad 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 table funktioner. Med hjälp av table funktioner kan du nu välja att endast aktivera de funktioner som stöds av andra klienter i ditt dataekosystem. Se Vilka är table funktionerna?.

Funktioner efter protokollversion

Följande table visar 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 tables med funktioner som kräver minReaderVersion = 1.

Funktion minWriterVersion minReaderVersion Dokumentation
Grundläggande funktioner 2 1 Vad är Delta Lake?
CHECK Begränsningar 3 1 Set en CHECK-constraint i Azure Databricks
Ändra dataflöde 4 1 Använda Delta Lake-ändringsdataflöde i Azure Databricks
Genererade columns 4 1 Delta Lake genererade columns
Column mappning 5 2 Namnge om och ta bort columns med Delta Lake column mappning
Identitet columns 6 2 Använd identitet columns i Delta Lake
Table funktioner läse 7 1 Vad är table funktioner?
Table funktioner skriver 7 3 Vad är table funktioner?
Radspårning 7 1 Använd radspårning för Delta tables
Borttagningsvektorer 7 3 Vad är borttagningsvektorer?
TidsstämpelNTZ 7 3 TIMESTAMP_NTZ typ
Flytande klustring 7 3 Använd flytande klustring för Delta tables
Uniform 7 2 Läs Delta tables med Iceberg-klienter
Typbreddning 7 3 Typbreddning
Variant 7 3 Variantstöd i Delta Lake
Kollationeringar 7 3 Sammanställningsstöd för Delta Lake