Podpora archivace v Azure Databricks
Důležité
Tato funkce je ve verzi Public Preview pro Databricks Runtime 13.3 LTS a vyšší.
Podpora archivace v Azure Databricks představuje kolekci funkcí, které umožňují používat cloudové zásady životního cyklu v cloudovém úložišti objektů obsahujícím tabulky Delta.
Důležité
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?
Podpora archivace umožňuje pouze dotazy, na které lze správně odpovědět, aniž by se museli dotýkat 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.
Operace s tabulkami Delta mohou selhat bez archivní podpory, protože datové soubory nebo soubory protokolu transakcí se přesunuly do archivovaných umístění a při dotazování nejsou dostupné. 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.
Povolení podpory archivace pro tabulku v Azure Databricks nevytvoří ani nemění zásady životního cyklu definované pro cloudové úložiště objektů. Pro požadované výsledky by zásady životního cyklu cloudu a delta.timeUntilArchived
nastavení měly být stejné.
Dotazy optimalizované pro archivovaná data
Podpora archivace v Azure Databricks optimalizuje následující dotazy s tabulkami Delta:
Dotaz | Nové chování |
---|---|
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] |
Automaticky ignorovat archivované soubory a vracet výsledky z dat v nechivované úrovni úložiště. |
Příkazy pro údržbu Delta Lake: OPTIMIZE , ZORDER , ANALYZE PURGE |
Automaticky ignorujte archivované soubory a spusťte údržbu ve zbývající části tabulky. |
Příkazy DDL a DML, které přepíší data nebo odstraní data, včetně následujících: REPLACE TABLE , INSERT OVERWRITE , , TRUNCATE TABLE 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. |
Viz Omezení.
Předčasné selhání a chybové zprávy
U dotazů, které musí prohledat archivované soubory, aby se vygenerovaly správné výsledky, zajistí konfigurace podpory archivace pro Delta Lake následující:
- 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
.
LIMIT
Snižte klauzuli tak, aby našel dostatek nearchivovaných řádků pro splnění zadaného LIMIT
parametru .
Povolení podpory archivace
Podporu archivace v tabulkách Azure Databricks pro tabulky Delta povolíte ručním zadáním archivačního intervalu nakonfigurovaného v podkladových zásadách správy životního cyklu cloudu, jak je znázorněno v následující ukázkové syntaxi:
ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');
Povolení podpory archivace efektivně informuje Azure Databricks, aby ignoroval soubory, které jsou starší než zadané období. Pokud toto nastavení povolíte bez nastavení zásad životního cyklu pro cloudové úložiště objektů, stále Azure Databricks ignoruje soubory na základě této zadané prahové hodnoty, ale žádná data se nearchivují.
Delta Lake nepracuje přímo se zásadami správy životního cyklu nakonfigurovanými ve vašem cloudovém účtu. Pokud zásady v cloudovém účtu aktualizujete, musíte zásady aktualizovat v tabulce Delta. Viz Změna pravidla přechodu správy životního cyklu.
Důležité
Podpora archivace spoléhá zcela na kompatibilní výpočetní prostředí Azure Databricks a funguje jenom pro tabulky Delta. 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
, jako v následujícím příkladu:
SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];
Tato operace vrátí identifikátory URI pro archivované soubory jako datový rámec Sparku. Obnovte potřebné archivované soubory podle zdokumentovaných pokynů od poskytovatele úložiště objektů. Informace o tom, jak Azure Databricks kontroluje obnovená data, najdete v tématu Jak azure Databricks ukázka pro obnovená data?.
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 to následující statistiky shromážděné pro prvních 32 sloupců v tabulce:
- Minimální hodnoty
- Maximální hodnoty
- Počet 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, na kterých jsou data rozdělená, seřazená z nebo v clusteru, aby se snížil počet souborů, které je potřeba obnovit.
Aktualizace nebo odstranění archivovaných dat
Operace selže, pokud spustíte MERGE
operaci nebo UPDATE
DELETE
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í. Pomocí SHOW ARCHIVED FILES
určete soubory, které je nutné obnovit.
Jak ukázka Azure Databricks pro 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.
Omezení
Jsou to následující omezení:
- 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
provádí pokus o maximální úsilí, ale pracuje pouze na souborech vektorů odstranění a odkazovaných datových souborech, které nejsou archivovány.PURGE
aplikace nemůže odstranit archivované soubory vektorů odstraňová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.
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 aktualizovat vlastnost delta.timeUntilArchived
.
Pokud se časový interval před archivací zkracuje (kratší doba od vytvoření souboru), archivační podpora tabulky Delta bude fungovat normálně 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ů:
- Při změně zásad se archivují všechny záznamy od 60 do 90 dnů.
- Po dobu 30 dnů nejsou archivovány žádné nové soubory (nejstarší nearchivované soubory jsou po prodloužení zásady starší 60 dnů).
- 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 prodlevy mezi starou prahovou hodnotou archivace a novou prahovou hodnotou archivace můžete použít jeden z následujících přístupů, abyste se vyhnuli dotazování na archivované soubory:
- 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 se každý den za prvních 30 dnů považuje za archivovaná data v Azure Databricks, ale poskytovatel cloudu ho přesto musí archivovat. Výsledkem není chyba, ale ignoruje některé datové soubory, které by se mohly dotazovat.
- Po 30 dnech aktualizujte
delta.timeUntilArchived
na90 days
.
- 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
přesně67 days
odpovídá 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.
- 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í
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á.