Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Delta Lake-tabellprotokoll anger vilka funktioner en klient måste ha stöd för för att läsa eller skriva en tabell. På den här sidan beskrivs protokollversioner, tabellfunktioner, kompatibilitetskrav och hur Azure Databricks hanterar protokolluppgraderingar. Se även Granska tabellinformation med beskriv detaljer.
Tabellprotokoll och kompatibilitet
Varje Delta Lake-tabell har en protokollspecifikation som anger vilka funktioner som krävs för att läsa från och skriva till tabellen. Program använder protokollspecifikationen för att avgöra om de kan stödja alla funktioner som tabellen använder. Om ett program inte kan stödja en funktion i det aktuella protokollet i en tabell kan programmet inte läsa eller skriva tabellen.
De flesta nya funktioner i Delta Lake kräver att du uppgraderar tabellprotokollet.
I följande tabell visas viktiga termer som beskriver Delta Lake-protokoll:
| Begrepp | Description |
|---|---|
| Delta Lake-klient | Alla system som läser eller skriver till en Delta Lake-tabell. |
| Läs protokoll | Anger det stöd som krävs för att en Delta Lake-klient ska kunna läsa en tabell. |
| Skriv protokoll | Anger det stöd som krävs för att en Delta Lake-klient ska kunna skriva till en tabell. |
minReaderVersion |
Heltalsvärdet för läsarprotokollet. Giltiga värden är 1, 2eller 3. |
minWriterVersion |
Heltalsvärdet för skrivarprotokollet. Giltiga värden är heltal 2 via 7. |
| Tabellfunktion | Ett detaljerad alternativ till protokollversioner som används när minReaderVersion = 3 och minWriterVersion = 7. Tabellfunktioner mappas till valbart aktiverade Delta Lake-funktioner. |
| Skrivarfunktion | En tabellfunktion som kräver skrivklientstöd men inte blockerar skrivskyddad åtkomst. |
| Läsarfunktion | En tabellfunktion som kräver både läs- och skrivklientstöd. Se Protokollversioner och tabellfunktioner. |
Skrivprotokoll och skrivfunktioner påverkar bara kompatibiliteten med skrivklienter, vilket ger skrivskyddad åtkomst till tabellen från äldre arbetsbelastningar.
Alla Delta Lake-funktioner är inte kompatibla med varandra.
Vissa tabellfunktioner kan inte tas bort när de är aktiverade. Se Ta bort en Delta Lake-tabellfunktion och nedgradera tabellprotokollet.
Protokollversioner och tabellfunktioner
Alla Delta Lake-tabeller innehåller en heltalsbaserad protokollversion som representeras av minReaderVersion och minWriterVersion. Varje version paketar flera funktioner tillsammans och funktionerna är kumulativa mellan olika versioner. För att följa Delta Lake-protokollet måste klienter implementera stöd för alla funktioner i en viss version, inklusive alla tidigare utgivna funktioner.
I Databricks Runtime 12.2 LTS och senare ersätter tabellfunktionerna det heltalsbaserade protokollet med detaljerade flaggor som anger vilka funktioner en tabell använder. Detta möjliggör finare kompatibilitetskontroller mellan klienter och tabeller.
Tabellskrivarfunktioner påverkar hur data skrivs. De kräver minWriterVersion=7 men blockerar inte läsarklienter.
Tabellläsarfunktioner påverkar hur data läse. Alla läsarfunktioner är också skrivfunktioner och kräver minReaderVersion=3 och minWriterVersion=7. En klient kan inte skriva till en tabell som den inte kan läsa.
När tabellfunktioner är aktiverade visas de i protokollet som readerFeatures eller writerFeatures. Delta Lake löser tabellprotokollet till den lägsta versionen som stöder alla aktiverade funktioner. Se Lägsta möjliga protokoll.
Note
Azure Databricks innehåller icke-breaking partiellt stöd för tabellfunktioner i alla Databricks Runtime-versioner som stöds. OSS Delta Lake-klienter väljer hur de ska implementera stöd för givna funktioner.
Protokolländringar
Protokollet för en tabell ändras under följande villkor:
- Om en ny funktion är aktiverad uppgraderas protokollet.
- Om en tabellfunktion tas bort nedgraderas protokollet.
Om du inaktiverar en tabellfunktion resulterar det inte i en nedgradering av protokollet. Du måste släppa funktionen för att ta bort den helt från protokollet. Det går inte att ta bort alla tabellfunktioner. Se Ta bort en Delta Lake-tabellfunktion och nedgradera tabellprotokollet.
Alla protokolländringsåtgärder står i konflikt med samtidiga skrivningar. Strömningsläsningar misslyckas när de stöter på en commit som ändrar tabellmetadata. Starta om de berörda strömmarna om du vill fortsätta. Rekommenderade metoder finns i Produktionsöverväganden för strukturerad direktuppspelning.
Note
Databricks rekommenderar att du aldrig ändrar tabellegenskaperna minReaderVersion och minWriterVersion direkt. Att ändra dessa egenskaper förhindrar inte protokolluppgraderingar, och om du anger ett lägre värde nedgraderas inte tabellen. Se Ta bort en Delta Lake-tabellfunktion och nedgradera tabellprotokollet.
Vad utlöser en protokolluppgradering
När du aktiverar en funktion uppgraderas tabellprotokollet automatiskt.
Protokolluppgraderingar utlöses på följande sätt:
- Aktivera automatiskt baserat på den syntax som används i
CREATEellerALTER-instruktioner. I enCLUSTER BYinstruktion möjliggör till exempelCREATE TABLEautomatiskt flytande klustring ochGENERATED ALWAYS ASaktiverar genererade kolumner. - Aktivera explicit via tabellegenskaper. Inställningen aktiverar till exempel
'delta.enableDeletionVectors' = trueborttagningsvektorer. - Om du aktiverar en funktion kan nödvändiga funktioner aktiveras automatiskt. Om du till exempel aktiverar UniForm automatiskt aktiveras kolumnmappning, och aktivering av flytande klustring aktiverar automatiskt kontrollpunkt V2. Granska relevant Azure Databricks dokumentation för att avgöra vilka tabellfunktioner en viss funktion kräver.
Läsarfunktioner uppgraderar både läs- och skrivprotokollen. Kolumnmappning är till exempel en läsarfunktion och kräver uppgradering av båda protokollen eftersom data lagras på olika sätt i lagringen.
Skrivfunktioner, till exempel CHECK begränsningar, uppgraderar bara skrivprotokollet.
Varning
De flesta protokollversionsuppgraderingar är oåterkalleliga och kan bryta befintliga Delta Lake-tabellläsare, skrivare eller båda. Uppgradera endast specifika tabeller när det behövs och kontrollera att alla aktuella och framtida produktionsverktyg stöder den nya protokollversionen.
Protokollnedgraderingar är tillgängliga för vissa funktioner. Se Ta bort en Delta Lake-tabellfunktion och nedgradera tabellprotokollet.
Lägsta möjliga protokoll
Delta Lake löser tabellprotokollet till den lägsta versionen som stöder alla aktiverade funktioner. Detta kan bara sänka minReaderVersion eller minWriterVersion, aldrig höja dem. Tabellfunktioner tas aldrig bort automatiskt. Använd DROP FEATURE för att ta bort en tabellfunktion från protokollet.
Om alla aktiverade funktioner stöds fullt ut i en lägre heltalsbaserad protokollversion kan tabellen återgå till den versionen och släppa readerFeatures eller writerFeatures från protokollet. Detta inaktiverar inte några funktioner. Lägre protokollversioner ökar kompatibiliteten eftersom alla klienter måste respektera dem.
Azure Databricks- och Databricks Runtime-kompatibilitet
Azure Databricks introducerar stöd för nya Delta Lake-funktioner i Databricks Runtime-versioner:
- Tabeller skrivna av en lägre Databricks Runtime-version har fullständigt läs- och skrivstöd i högre Databricks Runtime-versioner.
- Tabeller skrivna av en högre Databricks Runtime-version kan använda tabellfunktioner som inte stöds i lägre Databricks Runtime-versioner.
- Vissa funktioner tillåter skrivningar från lägre Databricks Runtime-versioner utan att helt tillämpa alla optimeringar för den aktiverade funktionen.
Om du bara använder Delta Lake-tabeller via Azure Databricks behöver du bara spåra funktionsstöd med hjälp av minimikraven för Databricks Runtime. Om du läser eller skriver tabeller från externa system måste du kontrollera att dessa klienter stöder tabellfunktionerna som är aktiverade i dina tabeller.
Stöd för bakåtporterade tabellfunktioner
I Databricks Runtime 12.2 LTS och senare ersatte tabellfunktionerna det heltalsbaserade protokollet med detaljerade flaggor som anger vilka funktioner en tabell använder.
Azure Databricks har stöd för bakåtporterade tabellfunktioner till Databricks Runtime 11.3 LTS och nedan, i stället för att endast stödja heltalsprotokollversioner, men bara för funktioner som redan stöds i den versionen.
Du kan till exempel läsa från och skriva till en tabell med genererade kolumner aktiverade med tabellfunktioner i Databricks Runtime 9.1 LTS. Du kan dock inte använda Databricks Runtime 9.1 LTS för att läsa från och skriva till en tabell med identitetskolumner aktiverade med hjälp av tabellfunktioner eftersom identitetskolumner kräver Databricks Runtime 10.4 LTS och senare.
När du använder tabellfunktioner med stöd för serverportering kanske vissa åtgärder som är tillgängliga i en viss Databricks Runtime-version inte är tillgängliga i motsvarande OSS Delta Lake-version. Om din arkitektur innehåller OSS Delta Lake-klienter testar du kompatibiliteten innan du aktiverar tabellfunktioner i produktionstabeller.
Delta Lake-funktioner och nödvändiga Databricks Runtime-versioner
I följande tabell visas den lägsta Databricks Runtime-versionen med fullständigt stöd för varje funktion, så att alla allmänt tillgängliga funktioner för både läsningar och skrivningar stöds.
| Feature | Kräver Databricks Runtime-version eller senare | Documentation |
|---|---|---|
CHECK Begränsningar |
Alla Databricks Runtime-versioner som stöds |
CHECK Begränsning |
| Ändra dataflöde | Alla Databricks Runtime-versioner som stöds | Använda ändringsdataflöde på Azure Databricks |
| Genererade kolumner | Alla Databricks Runtime-versioner som stöds | Delta Lake-genererade kolumner |
| Kolumnindelning | Alla Databricks Runtime-versioner som stöds | Byt namn på och släpp kolumner med Delta Lake-kolumnmappning |
| Identitetskolumner | Alla Databricks Runtime-versioner som stöds | Identitetskolumner |
| Tabellfunktionalitet | Alla Databricks Runtime-versioner som stöds | Protokollversioner och tabellfunktioner |
| Vektorer för borttagning | Alla Databricks Runtime-versioner som stöds | Borttagningsvektorer i Databricks |
| TimestampNTZ | Databricks Runtime 13.3 LTS |
TIMESTAMP_NTZ typ |
| UniForm | Databricks Runtime 13.3 LTS | Läsa Delta Lake-tabeller med Iceberg-klienter med UniForm |
| Klustring av vätska | Databricks Runtime 13.3 LTS | Använd vätskeklustring för tabeller |
| Radspårning | Databricks Runtime 14.3 LTS | Radspårning i Azure Databricks |
| Breddning av typer | Databricks Runtime 15.4 LTS | Typbreddning |
| Variant | Databricks Runtime 15.4 LTS | Stöd för varianttyp för Apache Iceberg och Delta Lake |
| Kollationeringar | Databricks Runtime 16.1 | Sorteringsstöd för Delta Lake |
| Skyddade kontrollpunkter | Databricks Körtid 16.3 | Ta bort en Delta Lake-tabellfunktion och nedgradera tabellprotokoll |
| Katalogincheckningar | Databricks Runtime 16.4 LTS | Katalogincheckningar |
Se Versions- och kompatibilitetsinformation för Databricks Runtime.
Note
Lakeflow-pipelines och Databricks SQL uppgraderar automatiskt körningsmiljöer med regelbundna versioner för att stödja nya funktioner. Se Viktig information om Lakeflow-pipelines och versionsuppgraderingsprocessen och Viktig information om Databricks SQL.
Funktioner efter protokollversion
Note
Information om Databricks Runtime-kompatibilitet finns i Azure Databricks- och Databricks Runtime-kompatibilitet.
Delta Lake använder separata minReaderVersion värden och minWriterVersion värden för att ange protokollfunktioner. Delta Lake-protokollet med öppen källkod har standardiserats för tabellfunktioner, men vissa klienter använder fortfarande äldre protokollversioner. Eftersom vissa klienter kanske inte stöder alla funktioner rekommenderar Databricks att du verifierar med klientdokumentationen och testar kompatibiliteten innan du aktiverar nya funktioner i produktionstabeller.
Apache Iceberg använder en enda format-version i stället för separata läsare och skrivarversioner. En iceberg-formatversion anger vilka funktioner som är tillgängliga men inte kräver att de används. Funktioner kräver ett aktivt val, förutom radspårning som är obligatorisk i formatversion 3. När en funktion visar N/A i kolumnen Iceberg är det en Delta-specifik funktion utan motsvarande isberg.
I följande tabell visas krav på protokollversioner för Delta Lake- och Apache Iceberg-tabellfunktioner. Funktionstypen anger om en funktion endast måste respekteras för skrivningar eller för både läsningar och skrivningar.
| Feature | Delta minWriterVersion |
Delta minReaderVersion |
Isberg format-version |
Funktionstyp |
|---|---|---|---|---|
| Grundläggande funktioner | 2 | 1 | 1 | Författare |
CHECK Begränsningar |
3 | 1 | N/A | Författare |
| Ändra dataflöde | 4 | 1 | N/A | Författare |
| Genererade kolumner | 4 | 1 | N/A | Författare |
| Kolumnmappning | 5 | 2 | N/A | Läsare och skrivare |
| Identitetskolumner | 6 | 1 | N/A | Författare |
| Radspårning | 7 | 1 | 3 | Författare |
| Borttagningsvektorer | 7 | 3 | 3 | Läsare och skrivare |
| TidsstämpelNTZ | 7 | 3 | 1 | Läsare och skrivare |
| Flytande klustring | 7 | 3 | 1 | Läsare och skrivare (1) |
| Isbergsläsare (UniForm) | 7 | 2 | N/A | Författare (2) |
| Typbreddning | 7 | 3 | N/A | Läsare och skrivare |
| Variant | 7 | 3 | 3 | Läsare och skrivare |
| Variantstrimning | 7 | 3 | 3 | Läsare och skrivare |
| Collationer | 7 | 3 | N/A | Läsare och skrivare |
| Skyddade kontrollpunkter | 7 | 1 | N/A | Författare |
| Katalogincheckningar | 7 | 3 | N/A | Läsare och skrivare |