Dela via


Arkiveringsstöd i Azure Databricks

Viktigt!

Den här funktionen finns i offentlig förhandsversion för Databricks Runtime 13.3 LTS och senare.

Arkiveringsstöd i Azure Databricks introducerar en samling funktioner som gör att du kan använda molnbaserade livscykelprinciper på molnobjektlagring som innehåller Delta-tabeller.

Viktigt!

Azure Databricks har arkiveringsstöd endast för Azure Archive. Se Azure-dokument om hur du optimerar kostnader med livscykelhantering.

Varför ska du aktivera arkiveringsstöd?

Arkiveringsstöd tillåter endast frågor som kan besvaras korrekt utan att röra arkiverade filer. Dessa frågor omfattar de som antingen:

  • Fråga endast metadata.
  • Ha filter som inte kräver genomsökning av arkiverade filer.

Alla frågor som kräver data i arkiverade filer misslyckas.

Viktigt!

Azure Databricks returnerar aldrig resultat för frågor som kräver arkiverade filer för att returnera rätt resultat.

Utan arkiveringsstöd kan åtgärder mot Delta-tabeller brytas eftersom datafiler eller transaktionsloggfiler har flyttats till arkiverade platser och inte är tillgängliga vid frågor. Arkiveringsstöd introducerar optimeringar för att undvika att fråga arkiverade data när det är möjligt. Den lägger också till ny syntax för att identifiera filer som måste återställas från arkivlagring för att slutföra frågor.

Om du aktiverar arkiveringsstöd för en tabell i Azure Databricks skapas eller ändras inte livscykelprinciper som definierats för molnobjektlagringen. För önskade resultat bör din molnlivscykelprincip och inställningen delta.timeUntilArchived vara lika.

Frågor som är optimerade för arkiverade data

Arkiveringsstöd i Azure Databricks optimerar följande frågor mot Delta-tabeller:

Fråga Nytt beteende
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] Ignorera arkiverade filer automatiskt och returnera resultat från data på en lagringsnivå som inte är arkiverad.
Delta Lake-underhållskommandon: OPTIMIZE, ZORDER, ANALYZE, PURGE Ignorera arkiverade filer automatiskt och kör underhåll på resten av tabellen.
DDL- och DML-instruktioner som skriver över data eller tar bort data, inklusive följande: REPLACE TABLE, INSERT OVERWRITE, TRUNCATE TABLE, DROP TABLE Markera transaktionsloggposter för målarkiverade datafiler som borttagna.
FSCK REPAIR TABLE Ignorera arkiverade filer och sök bara efter filer som inte har nått livscykelpolicyn.

Se Begränsningar.

Tidiga fel och felmeddelanden

För frågor som måste genomsöka arkiverade filer för att generera rätt resultat säkerställer konfigurationen av arkiveringsstöd för Delta Lake följande:

  • Frågor misslyckas tidigt om de försöker komma åt arkiverade filer, vilket minskar den bortkastade beräkningen och gör det möjligt för användare att snabbt anpassa och köra frågor på nytt.
  • Felmeddelanden informerar användarna om att en fråga har misslyckats eftersom frågan försökte komma åt arkiverade filer.

Användare kan generera en rapport över filer som måste återställas med hjälp av syntaxen SHOW ARCHIVED FILES . Se Visa arkiverade filer.

Viktigt!

Om du får felet Not enough files to satisfy LIMIThar tabellen inte tillräckligt med datarader i oarchiverade filer för att uppfylla det antal poster som anges av LIMIT. LIMIT Sänk satsen för att hitta tillräckligt med oarchiverade rader för att uppfylla den angivna LIMIT.

Aktivera arkiveringsstöd

Du aktiverar arkiveringsstöd i Azure Databricks för Delta-tabeller genom att manuellt ange arkiveringsintervallet som konfigurerats i den underliggande policyn för livscykelhantering i molnet, som i följande exempelsyntax:

ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');

Om du aktiverar arkiveringsstöd uppmanas Azure Databricks att ignorera filer som är äldre än den angivna perioden. Om du aktiverar den här inställningen utan att ha angett livscykelprinciper för molnobjektlagringen ignorerar Azure Databricks fortfarande filer baserat på det här angivna tröskelvärdet, men inga data arkiveras.

Delta Lake interagerar inte direkt med livscykelhanteringsprinciperna som konfigurerats i ditt molnkonto. Om du uppdaterar principen i ditt molnkonto måste du uppdatera principen i deltatabellen. Se Ändra övergångsregeln för livscykelhantering.

Viktigt!

Arkiveringsstöd är helt beroende av kompatibla Azure Databricks-beräkningsmiljöer och fungerar endast för Delta-tabeller. Att konfigurera arkiveringsstöd ändrar inte beteende, kompatibilitet eller stöd i OSS Delta Lake-klienter eller Databricks Runtime 12.2 LTS och nedan.

Visa arkiverade filer

Om du vill identifiera filer som måste återställas för att slutföra en viss fråga använder du SHOW ARCHIVED FILES, som i följande exempel:

SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];

Den här åtgärden returnerar URI:er för arkiverade filer som en Spark DataFrame. Återställ nödvändiga arkiverade filer genom att följa dokumenterade instruktioner från objektlagringsprovidern. Information om hur Azure Databricks söker efter återställde data finns i Hur gör Azure Databricks-exemplet för återställd data?.

Kommentar

Under den här åtgärden har Delta Lake bara åtkomst till datastatistiken som finns i transaktionsloggen. Som standard är följande statistik som samlats in på de första 32 kolumnerna i tabellen:

  • Minimivärden
  • Maximala värden
  • Antal null
  • Totalt antal poster

Filerna som returneras innehåller alla arkiverade filer som måste läsas för att avgöra om poster som uppfyller ett predikat finns i filen eller inte. Databricks rekommenderar att du tillhandahåller predikat som innehåller fält där data partitioneras, z-sorteras eller grupperas för att minska antalet filer som måste återställas.

Uppdatera eller ta bort arkiverade data

Åtgärden misslyckas om du kör en MERGEåtgärd , UPDATEeller DELETE som påverkar data i arkiverade filer. Du måste återställa data till en lagringsnivå som stöder snabb hämtning för att kunna köra dessa åtgärder. Använd SHOW ARCHIVED FILES för att fastställa vilka filer som du måste återställa.

Hur gör Azure Databricks-exempel för återställd data?

När Azure Databricks förbereder en genomsökning över en tabell med arkiveringsstöd aktiverat, tar det exempel på filer som är äldre än den angivna kvarhållningsperioden som krävs av frågan för att avgöra om filer har återställts eller inte.

Om resultatet visar att de exempelfiler som antas vara arkiverade har återställts förutsätter Azure Databricks att alla filer för frågan har återställts och att frågeprocesserna.

Begränsningar

Följande begränsningar finns:

  • Det finns inget stöd för livscykelhanteringsprinciper som inte baseras på tiden för att skapa filer. Detta omfattar åtkomsttidsbaserade principer och taggbaserade principer.
  • Du kan inte använda DROP COLUMN i en tabell med arkiverade filer.
  • REORG TABLE APPLY PURGE gör ett bästa försök, men fungerar bara på borttagningsvektorfiler och refererade datafiler som inte arkiveras. PURGE kan inte ta bort arkiverade borttagningsvektorfiler.
  • Om övergångsregeln för livscykelhantering utökas resulterar det i oväntat beteende. Se Utöka övergångsregeln för livscykelhantering.

Ändra övergångsregeln för livscykelhantering

Om du ändrar tidsintervallet för övergångsregeln för molnlivscykelhantering måste du uppdatera egenskapen delta.timeUntilArchived.

Om tidsintervallet innan arkivering förkortas (kortare tid sedan filen skapades) fortsätter arkiveringsstödet för Delta-tabellen att fungera normalt när tabellegenskapen har uppdaterats.

Utöka övergångsregeln för livscykelhantering

Om tidsintervallet före arkivering utökas (för att lägga till mer tid innan arkivering utlöses) kan det leda till fel när egenskapen delta.timeUntilArchived uppdateras till det nya värdet. Molnleverantörer återställer inte automatiskt filer från arkiverad lagring när datakvarhållningsprinciper ändras. Det innebär att filer som tidigare var berättigade till arkivering men som nu inte anses vara berättigade till arkivering fortfarande arkiveras.

Viktigt!

För att undvika fel anger du aldrig egenskapen delta.timeUntilArchived till ett värde som är större än den faktiska åldern för de senast arkiverade data.

Tänk dig ett scenario där tidsintervallet för arkivering ändras från 60 dagar till 90 dagar:

  1. Alla poster mellan 60 och 90 dagar gamla arkiveras när principen ändras.
  2. I 30 dagar arkiveras inga nya filer (de äldsta icke-arkiverade filerna är 60 dagar gamla när principen utökas).
  3. Efter 30 dagar beskriver livscykelpolicyn korrekt alla arkiverade data.

Inställningen delta.timeUntilArchived spårar det angivna tidsintervallet mot den tid då filen skapades av Delta-transaktionsloggen. Den har inte uttrycklig kunskap om den underliggande principen. Under fördröjningsperioden mellan det gamla arkiveringströskelvärdet och det nya arkiveringströskelvärdet kan du använda någon av följande metoder för att undvika att fråga arkiverade filer:

  1. Du kan lämna inställningen delta.timeUntilArchived med det gamla tröskelvärdet tills tillräckligt med tid har passerat för att alla filer ska arkiveras.
    • I exemplet ovan, varje dag under de första 30 dagarna, anses en annan dags data vara arkiverade av Azure Databricks men måste fortfarande arkiveras av molnleverantören. Detta resulterar inte i ett fel men ignorerar vissa datafiler som kan efterfrågas.
    • Efter 30 dagar uppdaterar du delta.timeUntilArchived till 90 days.
  2. Du kan uppdatera inställningen delta.timeUntilArchived varje dag för att återspegla det aktuella intervallet under fördröjningsperioden.
    • Molnprincipen är inställd på 90 dagar, men den faktiska åldern för arkiverade data ändras i realtid. Efter 7 dagar återspeglar inställningen delta.timeUntilArchived till 67 days exempel åldern för alla arkiverade datafiler korrekt.
    • Den här metoden är bara nödvändig om du måste komma åt alla data på frekventa nivåer.

Kommentar

Om du uppdaterar värdet för delta.timeUntilArchived ändras inte vilka data som arkiveras. Den ändrar bara vilka data Azure Databricks behandlar som om de arkiverades.