Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato stránka popisuje, jak převést externí tabulku na spravovanou tabulku Katalogu Unity v Azure Databricks pomocí příkazu ALTER TABLE ... SET MANAGED nebo Průzkumníka katalogu.
SET MANAGED Přehled
Slouží SET MANAGED k převodu externí tabulky na spravovanou tabulku katalogu Unity. I když pro převod můžete použít CREATE TABLE AS SELECT (CTAS), Databricks doporučuje SET MANAGED následující výhody:
- Minimalizuje výpadky čtečky a zapisovače.
- Zpracovává souběžné zápisy během převodu.
- Uchovává historii tabulek.
- Udržuje stejné konfigurace tabulek, včetně názvu, nastavení, oprávnění a zobrazení.
- Podporuje vrácení převedené spravované tabulky na externí tabulku.
Prerequisites
Všichni čtenáři a zapisovačé externích tabulek musí používat přístup založený na názvu. Například:
SELECT * FROM catalog_name.schema_name.table_name;Přístup založený na cestě není podporován a po převodu tabulky může selhat.
K použití
SET MANAGEDneboUNSET MANAGEDbezserverového výpočetního prostředí musíte použít Databricks Runtime 17.0 nebo novější nebo bezserverové výpočetní prostředky.Pokud chcete převést tabulky katalogu Unity s povolenými čteními Icebergu (UniForm), musíte použít Databricks Runtime 17.2 nebo vyšší nebo bezserverové výpočetní prostředky, abyste mohli použít
TRUNCATE UNIFORM HISTORY.Azure Databricks čtenáři a zapisovače musí používat Databricks Runtime 15.4 LTS nebo vyšší. Pokud vaši čtenáři nebo zapisovači používají verzi 14.3 LTS nebo starší, přečtěte si alternativní možnost pro čtenáře a zapisovače ve službě Databricks Runtime 14.3 LTS nebo starší.
Příkaz
SET MANAGEDselže s chybouDELTA_TRUNCATED_TRANSACTION_LOG, pokud tabulka obsahujeminReaderVersion=2,minWriterVersion=7, atableFeatures={..., columnMapping}. Pomocí příkazuDESCRIBE DETAIL. můžete ověřit, jestli tabulka obsahuje tyto vlastnosti.Externí klienti (mimo Databricks) musí podporovat čtení do spravovaných tabulek Katalogu Unity. Viz tabulky Accessu s klienty Delta.
- Pomocí řídicího panelu Access Insights zjistíte, zda jsou čtenáři a zapisovači přistupující k vašim tabulkám na Databricks Runtime nebo externí bez Databricks.
Important
Chcete-li se vyhnout konfliktům, zrušte všechny existující OPTIMIZE úlohy příkazů (clustering liquid, komprimace, ZORDER) provozované v tabulce a neplánujte žádné úlohy při převodu externích tabulek na spravované tabulky.
Převod z externí na spravovanou tabulku
Important
Převod externích na spravované tabulky pomocí Průzkumníka katalogu je v beta verzi.
Průzkumník katalogu
Při převodu pomocí Průzkumníka katalogu se automaticky použije přístup založený na názvu. Najednou můžete převést jednu nebo více externích tabulek ve schématu.
Přejděte do tabulky nebo schématu, které chcete převést v Průzkumníku katalogu.
V části O této tabulce (stránka podrobností tabulky) nebo O tomto schématu (stránka podrobností schématu) klikněte na Tlačítko Prozkoumat optimalizace.
V dialogovém okně Proč migrovat do spravovaných tabulek katalogu Unity? klikněte na Pokračovat.
Vyberte externí tabulky, které chcete převést. Pokud jste dialogové okno otevřeli ze stránky podrobností tabulky, je tabulka předem vybraná. Na panelu hledání můžete najít další tabulky. Spravované tabulky se nedají vybrat.
Klikněte na Vytvořit konverzní poznámkový blok.
Volitelně můžete zadat název poznámkového bloku. Ve výchozím režimu se poznámkový blok uloží do vaší domovské složky. Kliknutím na Procházet ho uložíte do jiného umístění.
V poznámkovém bloku si projděte osvědčené postupy a ověřte, že splňujete všechny požadavky.
Spusťte buňku SET SPRAVOVANÉ dotazy .
Po spuštění buňky se typ tabulky zobrazí jako SPRAVOVANÝ místo EXTERNÍ v Průzkumníku katalogu. Aktualizujte stránku, pokud se stav neaktualizuje okamžitě.
SQL
V závislosti na tom, jestli má vaše externí tabulka povolené čtení Apache Icebergu (UniForm), spusťte jeden z následujících příkazů. Zkontrolujte, jestli jsou povolená čtení Icebergu (UniForm), abyste ověřili, jestli je v tabulce povolené čtení Apache Iceberg (UniForm).
U externích tabulek katalogu Unity bez aktivované funkce Apache Iceberg pro čtení (UniForm):
ALTER TABLE catalog.schema.my_external_table SET MANAGED;Po převodu můžete povolit čtení Icebergu ve spravované tabulce bez obav z kompatibility.
U externích tabulek katalogu Unity, které již mají povolené čtení pomocí Apache Iceberg (UniForm):
ALTER TABLE catalog.schema.my_external_table SET MANAGED TRUNCATE UNIFORM HISTORY;Zahrňte
TRUNCATE UNIFORM HISTORYpro zachování optimálního výkonu a kompatibility tabulek.TRUNCATE UNIFORM HISTORYzkrátí pouze historii UniForm Icebergu a neodstraní historii Delta. Výsledkem tohoto příkazu je krátký výpadek čtení a zápisu pro Iceberg po zkrácení.
Pokud se příkaz při kopírování dat přeruší, restartujte ho a pokračuje tam, kde skončil.
Warning
Databricks doporučuje vyhnout se souběžnému spouštění více SET MANAGED příkazů ve stejné tabulce, což může vést k nekonzistentnímu stavu tabulky.
Po převodu tabulky musíte:
- Restartujte jakékoli úlohy streamování (čtení nebo zápis) využívající externí tabulku, abyste se vyhnuli čtení z předchozího umístění nebo zápisu do něj. Zastavte aktuální úlohu a spusťte novou úlohu se stejnou konfigurací.
- Ověřte, že čtenáři a autoři pracují se spravovanou tabulkou.
Prediktivní optimalizace se po převodu automaticky povolí, pokud ji ručně nezablokujete. Viz Ověření, jestli je povolená prediktivní optimalizace.
S povolenou prediktivní optimalizací Azure Databricks automaticky odstraní data v externím umístění katalogu Unity po 14 dnech. Pokud je prediktivní optimalizace zakázaná, spusťte VACUUM (vyžaduje Databricks Runtime 17.0 nebo vyšší nebo bezserverové výpočetní prostředky) v nově převedené spravované tabulce po 14 dnech.
VACUUM my_converted_table
Note
V některých případech se data v externím umístění katalogu Unity nemusí po 14 dnech odstranit ani s povolenou prediktivní optimalizací , například pokud se spravovaná tabulka často nepoužívá nebo je velmi malá. V těchto případech spusťte VACUUM ručně po 14 dnech, abyste odebrali předchozí data.
Azure Databricks odstraní pouze data v externím umístění. Protokol transakcí Delta a odkaz na tabulku v katalogu Unity se uchovávají.
Ověření převodu
Průzkumník katalogu
Aktualizujte stránku. Na kartě Podrobnosti v části O této tabulce se typ tabulky zobrazí jako Spravovaný.
SQL
Spuštěním následujícího příkazu potvrďte, že vaše externí tabulka byla převedena na spravovanou tabulku:
DESCRIBE EXTENDED catalog_name.schema_name.table_name
Tabulka Type se zobrazí jako MANAGED.
Alternativní možnost pro čtenáře a zapisovače v Databricks Runtime 14.3 LTS nebo níže
Databricks doporučuje upgradovat všechny čtenáře a zapisovače na Databricks Runtime 15.4 LTS nebo vyšší, aby využil výhod SET MANAGED, včetně možnosti zachovat historii tabulek.
Stále můžete použít SET MANAGED, pokud máte čtenáře nebo zapisovače v Databricks Runtime 14.3 nebo nižším. Po převodu na spravovanou tabulku však nemůžete provádět časové cestování k historickým verzím podle časového razítka – pouze podle verze. Pokud se vrátíte k externí tabulce ve 14denním okně, bude znovu povolena časová cesta k historickým potvrzením provedeným před převodem.
Ve všech případech nefunguje vrácení zpět externí tabulky katalogu Unity do určitého časového bodu, pokud byly mezi konverzí a vrácením uskutečněny jakékoliv úpravy v rámci spravované tabulky katalogu Unity.
Zápis do tabulky po převodu pomocí Databricks Runtime 15.4 LTS nebo níže vyžaduje vyřazení inCommitTimestamp funkce:
ALTER TABLE <table_name> DROP FEATURE inCommitTimestamp;
Řešení potíží se selháními převodu
Tato část popisuje běžné problémy při převodu externích tabulek do spravovaných tabulek Katalogu Unity a jejich řešení.
Jednotnost verze Databricks Runtime
Vyhněte se spuštění nebo opakování převodu stejné tabulky pomocí různých verzí Databricks Runtime. Metadata se dají serializovat různě v různých verzích, což způsobuje VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED selhání. Pokud převod selže, vždy zkuste znovu použít stejnou verzi Databricks Runtime.
Vypnutí clusteru během převodu
Pokud se váš cluster během převodu vypne, příkaz může selhat s DELTA_ALTER_TABLE_SET_MANAGED_INTERNAL_ERROR. Opakujte příkaz a obnovte převod.
Poškozená externí tabulka
Pokud je externí tabulka již poškozena (například neplatný stav tabulky), může převod selhat s chybami jako DELTA_TRUNCATED_TRANSACTION_LOG, DELTA_TXN_LOG_FAILED_INTEGRITY nebo DELTA_STATE_RECOVER_ERRORS. Před pokusem o převod ověřte, zda můžete spustit základní operace v externí tabulce, například DESCRIBE DETAIL.
Chyba ověření souboru
Příkaz SET MANAGED ověří, že se všechny soubory v nejnovějším snímku tabulky zkopírují do nového umístění spravované tabulky. Pokud nějaké soubory chybí, příkaz selže s chybou DELTA_ALTER_TABLE_SET_MANAGED_FAILED.FILE_VALIDATION_FAILED .
Řešení tohoto problému:
- Zkontrolujte protokoly ovladače Spark a zjistěte, které soubory se nedají migrovat.
- Ověřte, že tyto soubory existují ve zdrojovém umístění externí tabulky a jsou přístupné.
- Zkuste
ALTER TABLE ... SET MANAGEDpříkaz zopakovat.
Pokud problém přetrvává, obraťte se na podporu Databricks.
Vrácení zpět k externí tabulce
Important
Příkaz UNSET MANAGED vyžaduje Databricks Runtime 17.0 nebo vyšší nebo bezserverové výpočetní prostředky.
Po převodu externí tabulky na spravovanou tabulku ji můžete do 14 dnů vrátit zpět.
Po vrácení zpět se metadata tabulky aktualizují tak, aby odkazovala zpět na původní externí umístění. Všechny zápisy provedené do spravovaného umístění po převodu se zachovají. Potvrzení provedená do spravovaného umístění mezi převodem a vrácením změn zůstanou přístupná podle verze, ale ne podle časového razítka.
Sedm dní po vrácení zpět Azure Databricks automaticky odstraní data ve spravovaném umístění.
Pokud se chcete vrátit k externí tabulce, spusťte následující příkaz:
ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED;
Pokud je příkaz vrácení zpět přerušen, spusťte ho znovu a zkuste to znovu.
Po vrácení zpět musíte také, stejně jako při převodu, restartovat úlohy streamování.
Ověření obnovení
Spuštěním následujícího příkazu potvrďte, že se převod vrátil zpět:
DESCRIBE EXTENDED catalog_name.schema_name.table_name
Tabulka Type se zobrazí jako EXTERNAL.
Pokud si tabulku prohlížíte v Průzkumníku katalogu, aktualizujte stránku. Na kartě Podrobnosti v části O této tabulce se typ tabulky zobrazí jako EXTERNAL.
Časy výpadku a kopírování dat
Příkaz SET MANAGED minimalizuje nebo eliminuje výpadky v porovnání s alternativními přístupy, jako je DEEP CLONE. Proces převodu používá dvoustupňový přístup:
- Počáteční kopírování dat (bez výpadku): Data tabulky a protokol transakcí Delta se zkopírují z externího umístění do spravovaného umístění. Čtenáři a zapisovači nadále fungují normálně bez dopadu na probíhající operace.
- Přepnutí do spravovaného umístění (krátký výpadek): Potvrzení provedená do externího umístění během prvního kroku se přesunou do spravovaného umístění a metadata tabulky se aktualizují, aby se zaregistrovalo nové spravované umístění. Během tohoto kroku se dočasně zablokují všechny zápisy do externího umístění, což vede k výpadku zapisovače. Čtenáři na Databricks Runtime 16.1 nebo vyšší nezažívají žádné výpadky; u čtenářů na Databricks Runtime 15.4 může docházet k výpadkům.
Odhadovaný výpadek:
| Velikost tabulky | Doporučená velikost clusteru | Čas kopírování dat | Výpadek čtečky a zapisovače |
|---|---|---|---|
| 100 GB nebo méně | 32jádrový / X-Large SQL sklad | ~6 min nebo méně | ~1–2 min nebo méně |
| 1 TB | 64jádrový / dvojnásobně velký SQL warehouse | ~30 min. | ~1–2 min |
| 10 terabajtů | 256jádrový / 4X-Large SQL datový sklad | ~1,5 hod. | ~1–5 min |
Odhady předpokládají propustnost 0,5–2 GB/jádro procesoru/minutu.
Note
Výpadek se může lišit v závislosti na faktorech, jako je velikost souboru, počet souborů a počet potvrzení.
Známá omezení
Klienti streamování: Po převodu je nutné restartovat všechny úlohy streamování.
Omezení historie tabulky po vrácení zpět: Historie tabulky pro commity provedené po převodu, ale před vrácením zpět umožňuje cestování v čase podle verze, ale ne podle časového razítka.
Omezení sdílení Delta: Příkaz
SET MANAGEDnení plně kompatibilní se sdílením Delta. Open Delta Sharing funguje podle očekávání, ale sdílení Databricks na Databricks neaktualizuje automaticky spravované umístění tabulky příjemců. Příjemce bude dál číst ze starého umístění, dokud se tabulka znovu nesdílí. Pokud chcete tabulku sdílet znovu:ALTER SHARE <share_name> REMOVE TABLE <table_name>; ALTER SHARE <share_name> ADD TABLE <table_name> AS <table_share_name> WITH HISTORY;Několik cloudových oblastí: Pokud je výchozí spravované umístění metastoru, katalogu nebo schématu katalogu Unity v jiné cloudové oblasti než umístění úložiště externí tabulky, může se vám stát, že se vám účtují další náklady na přenos dat mezi oblastmi. Poskytovatel cloudu tyto poplatky ukládá mimo kontrolu Databricks.
Ověření umístění schématu, katalogu a metastoru:
DESC SCHEMA EXTENDED <catalog_name>.<schema_name>; DESC CATALOG EXTENDED <catalog_name>; SELECT * FROM system.information_schema.metastores;