Podpora archivace v Azure Databricks

Důležité

Tato funkce je ve verzi Public Preview pro Databricks Runtime 13.3 LTS a vyšší.

Díky podpoře archivace v Azure Databricks můžete používat cloudové politiky životního cyklu na cloudových objektových úložištích, které obsahují tabulky Delta Lake. Povolení podpory archivace v tabulce Delta Lake efektivně informuje Azure Databricks, aby ignoroval soubory starší než zadané období v tabulce.

Zásady životního cyklu cloudového úložiště snižují náklady na úložiště tím, že starší soubory přesouvají do archivační úrovně úložiště. Bez archivní podpory může politika životního cyklu narušit dotazy nad tabulkou Delta Lake, protože datové soubory, které dotazy čtou, již nejsou dostupné. Přečtěte si Proč byste měli povolit podporu archivace?.

Kdy využít podporu archivace

Povolte archivní podporu u tabulky, když platí vše následující:

  • Používáte zásadu životního cyklu, která archivuje datové soubory tabulky podle doby vytvoření souboru.
  • Většina dotazů proti tabulce čte nedávná data nebo odfiltruje archivované soubory.
  • Dotazy, které vyžadují archivovaná data, jsou vzácné a můžete počkat, až někdo tyto soubory obnoví v úložišti vašeho cloudového poskytovatele, než dotaz znovu spustíte. Viz Obnovení archivovaných souborů.

Nepoužívejte archivní podporu, pokud vaše dotazy pravidelně prohledávají celou historii tabulky. Dotazy, které vyžadují archivované soubory, selžou. Archivní podpora také nefunguje s pravidly životního cyklu založenými na době přístupu nebo značkách. Viz Omezení.

Požadavky

Azure Databricks podporuje archivaci pouze pro Azure Archive. Podívejte se na dokumentaci Azure k optimalizaci nákladů pomocí správy životního cyklu.

Proč byste měli povolit podporu archivace?

Archivní podpora umožňuje pouze dotazy, které vracejí správné výsledky bez zásahu do archivovaných souborů. Mezi tyto dotazy patří:

  • Pouze metadata dotazu.
  • Máte filtry, které nevyžadují prohledávání archivovaných souborů.

Všechny dotazy, které vyžadují data v archivovaných souborech, selžou.

Důležité

Azure Databricks nikdy nevrací výsledky pro dotazy, které vyžadují archivované soubory k vrácení správného výsledku.

Povolení podpory archivace pro tabulku v Azure Databricks nevytvoří ani nemění zásady životního cyklu definované pro cloudové úložiště objektů. Viz Změna pravidla přechodu správy životního cyklu.

Bez archivní podpory by operace proti tabulkám Delta Lake mohly selhat, protože datové soubory nebo transakční logy byly přesunuty na archivovaná místa a nejsou dostupné při dotazování. Podpora archivace zavádí optimalizace, které zabrání dotazování na archivovaná data, pokud je to možné. Přidá také novou syntaxi pro identifikaci souborů, které se musí obnovit z archivačního úložiště, aby se dokončily dotazy.

Dotazy optimalizované pro archivovaná data

Archivační podpora v Azure Databricks optimalizuje tyto dotazy nad tabulkami Delta Lake.

Dotaz Nové chování
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] Automaticky ignoruje archivované soubory a vrátí výsledky z dat v nearchivované úrovni úložiště.
Příkazy pro údržbu Delta Lake: OPTIMIZE, ZORDER, ANALYZEPURGE Automaticky ignorujte archivované soubory a spusťte údržbu ve zbývající části tabulky.
DDL a DML příkazy, které přepisují nebo mazou data, včetně REPLACE TABLE, INSERT OVERWRITE, TRUNCATE TABLE, a DROP TABLE Označte položky transakčního protokolu pro cílové archivované datové soubory jako odstraněné.
FSCK REPAIR TABLE Archivované soubory ignorujte a zkontrolujte jenom soubory, které nedosáhly zásady životního cyklu.

Předčasné selhání a chybové zprávy

U dotazů, které musí skenovat archivované soubory, aby byly výsledky správné, má konfigurace archivní podpory pro Delta Lake tyto efekty:

  • Dotazy selžou včas, pokud se pokusí o přístup k archivovaným souborům, což snižuje plýtvání výpočetními prostředky a umožňuje uživatelům rychle přizpůsobovat a znovu spouštět dotazy.
  • Chybové zprávy informují uživatele, že dotaz selhal, protože se dotaz pokusil o přístup k archivovaným souborům.

Uživatelé mohou vygenerovat sestavu souborů, které je nutné obnovit pomocí syntaxe SHOW ARCHIVED FILES. Viz Zobrazení archivovaných souborů.

Důležité

Pokud se zobrazí chyba Not enough files to satisfy LIMIT, tabulka neobsahuje dostatek řádků dat v nearchivovaných souborech, aby splňovala počet záznamů určených LIMIT. Upravte klauzuli LIMIT pro nalezení dostatečného množství nearchivovaných řádků, abyste splnili zadaný parametr LIMIT. Viz Omezení.

Povolení podpory archivace

Archivační podporu tabulek Delta Lake povolíte ručním zadáním archivního intervalu nastaveného v podkladové zásadě správy životního cyklu cloudu.

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

Když nastavíte timeUntilArchived čas, azure Databricks bude ignorovat soubory v tabulce Delta Lake, které jsou starší než zadané časové období. Toto nastavení je oddělené od zásad životního cyklu vašeho cloudového účtu. Změny v jednom nemají vliv na druhý. Pokud aktualizujete zásady životního cyklu ve svém cloudovém účtu, musíte také aktualizovat nastavení archivace v tabulce Delta Lake. Viz Změna pravidla přechodu správy životního cyklu.

Když ve svém cloudovém účtu nastavíte novou zásadu životního cyklu, může trvat až 24 hodin, než se změny projeví. Viz provádění zásad správy životního cyklu.

Pokud povolíte toto nastavení bez zásad životního cyklu nastaveného pro cloudové úložiště objektů, archivační podpora umožňuje úspěšné dotazy a výsledky zahrnují data ze souborů označených pro archivaci. Podívejte se na informace o tom, jak Azure Databricks pracuje s obnovenými daty?

Výstraha

Zásady životního cyklu cloudu nesmí archivovat protokol transakcí Delta (_delta_log/ adresář). Viz Omezení.

Důležité

Archivní podpora se zcela opírá o kompatibilní výpočetní prostředí Azure Databricks a funguje pouze pro tabulky Delta Lake. Konfigurace podpory archivace nemění chování, kompatibilitu ani podporu v klientech OSS Delta Lake nebo Databricks Runtime 12.2 LTS a novějších verzích.

Zobrazení archivovaných souborů

Chcete-li identifikovat soubory, které je nutné obnovit k dokončení daného dotazu, použijte SHOW ARCHIVED FILES.

SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];

Tato operace vrací názvy archivovaných souborů jako Spark DataFrame. Obnovte potřebné archivované soubory podle zdokumentovaných pokynů od poskytovatele úložiště objektů. Viz Obnovení archivovaných souborů.

Informace o tom, jak Azure Databricks kontroluje obnovená data, najdete v tématu Jak Azure Databricks provádí kontrolu obnovených dat?.

Poznámka:

Během této operace má Delta Lake přístup pouze ke statistikě dat obsaženým v transakčním protokolu. Ve výchozím nastavení jsou toto statistiky shromážděné v prvních 32 sloupcích tabulky:

  • Minimální hodnoty
  • Maximální hodnoty
  • Počet hodnot null
  • Celkový počet záznamů

Vrácené soubory zahrnují všechny archivované soubory, které musí být přečtené, aby bylo možné určit, zda v souboru existují záznamy splňující predikát. Databricks doporučuje poskytovat predikáty, které zahrnují pole, podle kterých jsou data rozdělena, z-řazena nebo seskupena do clusterů, aby se snížila potřeba obnovy souborů.

Obnovení archivovaných souborů

Chcete-li identifikovat všechny soubory, které vyžadují obnovení, použijte SHOW ARCHIVED FILES k zobrazení seznamu archivovaných souborů.

Pomocí rozhraní API pro rehydrataci obnovte soubory do online vrstvy úložiště. Viz obnovení blobů z archivační úrovně.

Po obnovení souborů v úložišti poskytovatele cloudu můžete zadat dotaz na tabulku. Podpora archivace automaticky rozpozná obnovené soubory. Informace o tom, jak Azure Databricks kontroluje obnovená data, najdete v tématu Jak Azure Databricks provádí kontrolu obnovených dat?.

Aktualizace nebo odstranění archivovaných dat

Operace selže, pokud spustíte MERGEoperaci nebo UPDATEDELETE operaci, která má vliv na data v archivovaných souborech. Chcete-li tyto operace spustit, je nutné obnovit data do vrstvy úložiště, která podporuje rychlé načítání. Slouží SHOW ARCHIVED FILES k určení souborů, které musíte obnovit (viz Obnovení archivovaných souborů).

Jak Azure Databricks vzorkuje obnovená data?

Když Azure Databricks připraví kontrolu nad tabulkou s povolenou archivační podporou, vzorkuje soubory starší než zadanou dobu uchovávání, kterou dotaz vyžaduje k určení, jestli se soubory obnovily nebo nebyly obnoveny. Pokud výsledky naznačují, že se ukázkové soubory pravděpodobně archivovaly, Azure Databricks předpokládá, že byly obnoveny všechny soubory pro dotaz a procesy dotazu. Výsledky zahrnují data ze souborů označených pro archivaci.

Vzorkování se nemusí vztahovat na všechny dotazy, viz Omezení.

Omezení

Archivní podpora má tato omezení:

  • Podpora archivace se vztahuje pouze na datové soubory. Pokud se všechny soubory v transakčním protokolu Delta (_delta_log/ adresáři) přesunou do archivované úrovně úložiště, stane se tabulka zcela nepřístupná a všechny dotazy na tabulku selžou. Zásady životního cyklu cloudu musíte nakonfigurovat tak, aby _delta_log/ cesta nebyla zahrnuta v archivu. Podívejte se na příklady konfigurací životního cyklu S3.
  • Pro zásady správy životního cyklu, které nejsou založené na čase vytváření souborů, neexistuje žádná podpora. To zahrnuje zásady založené na čase přístupu a zásady založené na značkách.
  • V tabulce s archivovanými soubory nelze použít DROP COLUMN.
  • REORG TABLE APPLY PURGE se snaží vynaložit maximální úsilí, ale pracuje pouze na odstraňovacích vektorových souborech a odkazovaných datových souborech, které nejsou archivované. PURGE nemůže odstranit archivované soubory vektorů odstranění.
  • Rozšíření pravidla přechodu správy životního cyklu vede k neočekávanému chování. Viz Rozšíření pravidla přechodu správy životního cyklu.
  • LIMIT dotazy na tabulky s povolenou archivační podporou neaktivují vzorkování obnovených dat. Pokud se data tabulky obnoví, většina dotazů proběhne úspěšně při dotazování na obnovená data, ale LIMIT dotaz vrátí DELTA_ARCHIVED_FILES_IN_LIMIT chybu. Podívejte se na informace o tom, jak Azure Databricks pracuje s obnovenými daty?

Změna pravidla přechodu správy životního cyklu

Pokud změníte časový interval pro pravidlo přechodu správy životního cyklu cloudu, musíte vlastnost delta.timeUntilArchived aktualizovat na stejný interval.

Pokud je časový interval před archivací zkrácen (méně času od vytvoření souboru), archivační podpora tabulky Delta Lake funguje normálně i po aktualizaci vlastnosti tabulky.

Rozšíření pravidla přechodu správy životního cyklu

Pokud je časový interval před archivací rozšířen (pro přidání dalšího času před aktivací archivace), může aktualizace vlastnosti delta.timeUntilArchived na novou hodnotu vést k chybám. Poskytovatelé cloudu při změně zásad uchovávání dat automaticky neobnoví soubory z archivovaného úložiště. To znamená, že soubory, které dříve byly způsobilé pro archivaci, ale nyní nejsou považovány za způsobilé pro archivaci, jsou stále archivovány.

Důležité

Chcete-li se vyhnout chybám, nikdy nenastavujte vlastnost delta.timeUntilArchived na hodnotu větší než skutečný věk naposledy archivovaných dat.

Představte si scénář, ve kterém se časový interval pro archivaci mění z 60 dnů na 90 dnů:

  1. Při změně zásad se archivují všechny záznamy od 60 do 90 dnů.
  2. Po dobu 30 dnů nejsou archivovány žádné nové soubory (nejstarší nearchivované soubory jsou po prodloužení zásady starší 60 dnů).
  3. Po 30 dnech zásady životního cyklu správně popisují všechna archivovaná data.

Nastavení delta.timeUntilArchived sleduje nastavený časový interval pro čas vytvoření souboru zaznamenaný protokolem transakcí Delta. Nemá explicitní znalosti o podkladové zásadě. Během přechodného období mezi starým archivním prahem a novým archivním prahem můžete zvolit jeden z těchto přístupů, abyste se vyhnuli dotazům na archivované soubory:

  1. Nastavení můžete ponechat delta.timeUntilArchived se starou prahovou hodnotou, dokud nebude dostatek času pro archivaci všech souborů.
    • Podle výše uvedeného příkladu by se každý den během prvních 30 dnů považovalo za archivovaný další den dat v Azure Databricks, ale poskytovatel cloudu tato data přesto musí archivovat. Výsledkem není chyba, ale přeskakuje některé datové soubory, které je možné dotazovat.
    • Po 30 dnech aktualizujte delta.timeUntilArchived na 90 days.
  2. Můžete aktualizovat nastavení delta.timeUntilArchived každý den, aby odráželo aktuální časový interval během prodlevy.
    • Zásady cloudu jsou sice nastavené na 90 dnů, ale skutečný věk archivovaných dat se mění v reálném čase. Například po 7 dnech nastavení delta.timeUntilArchived na 67 days přesně odráží stáří všech archivovaných datových souborů.
    • Tento přístup je nezbytný jenom v případě, že potřebujete získat přístup ke všem datům v horkých úrovních.

Poznámka:

Při aktualizaci hodnoty delta.timeUntilArchived se nezmění, která data se archivují. Změní pouze data, která Azure Databricks považuje za archivovaná.