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-preview
och 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 minWriterVersion
table. 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 |