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.
Důležité
Tato funkce je ve verzi Public Preview a je dostupná jenom pro zúčastněné zákazníky. Pokud se chcete zúčastnit náhledu, přihlaste se vyplněním tohoto formuláře. Tato funkce podporuje jenom převod cizích tabulek federovaných pomocí HMS a Glue Federation.
Tato stránka popisuje, jak použít SET MANAGED k převodu cizí tabulky na spravovanou tabulku.
- Podrobnosti o převodu externí tabulky na spravovanou tabulku najdete v tématu Převod externí tabulky na spravovanou tabulku katalogu Unity.
- Podrobnosti o převodu cizí tabulky na externí tabulku najdete v tématu Převod cizí tabulky na externí tabulku katalogu Unity.
SET MANAGED přehled
SET MANAGED Pomocí této funkce můžete převést cizí tabulku na spravovanou tabulku Katalogu Unity v Azure Databricks.
SET MANAGED nabízí následující výhody:
- Zachování historie tabulek
- Zachování stejné konfigurace tabulek, včetně stejného názvu, nastavení, oprávnění a zobrazení
- Výhody prediktivní optimalizace Při převodu tabulky na spravovanou je prediktivní optimalizace nastavena na
INHERIT, což znamená, že dědí nastavení ze schématu nebo úrovně katalogu. Ve výchozím nastavení je tato možnost momentálně zakázaná. Prediktivní optimalizaci u převedené tabulky můžete povolit spuštěním příkazuALTER TABLE <table_name> ENABLE PREDICTIVE OPTIMIZATION, který ji nastaví naENABLEDmístoINHERIT.
Požadavky
- Formát dat cizí tabulky musí být Delta Lake. Pokud chcete provést jednorázový převod pro Parquet, přečtěte si téma Převod na Delta Lake.
- Typ tabulky: Typ tabulky HMS musí být externí tabulka HMS. Příkaz selže, pokud je tabulka spravovaná tabulka HMS.
- Runtime: Databricks Runtime 17.3 nebo vyšší
-
Oprávnění:
OWNERneboMANAGEoprávnění k tabulce aCREATEoprávnění proEXTERNAL LOCATION
Syntaxe
Pokud chcete převést cizí tabulku Unity Catalog tak, aby byla spravovaná službou Unity Catalog, spusťte následující příkaz:
ALTER TABLE source_table SET MANAGED {MOVE | COPY}
Parametry
source_table
Existující cizí tabulka v katalogu Unity. Cizí tabulky obsahují data a metadata spravovaná externím katalogem. Před převedením, pokud dojde k smazání zdrojové tabulky v externím katalogu, je cizí tabulka také zrušena v katalogu Unity. Po převodu tabulky na spravovanou, vyřazení zdrojové tabulky v externím katalogu nemá vliv na spravovanou tabulku katalogu Unity.
MOVEPřevede tabulku na spravovanou a zakáže přístup ke zdrojové tabulce v externím katalogu.
Přístup prostřednictvím externího katalogu nebo přístupu na základě cesty se po převodu tabulky nezdaří. Všichni čtenáři a zapisovačé do tabulky musí pro přístup použít obor názvů katalogu Unity.
Všichni čtenáři a autoři 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 selže. Například:
SELECT * FROM delta.`protocol://path/to/table`;Externí klienti (ne Azure Databricks) musí podporovat čtení ze spravovaných tabulek Unity Catalog. Viz Režim kompatibility.
Pomocí nástěnky Access Insights zjistíte, jestli čtenáři a zapisovači přistupující k vašim tabulkám jsou Databricks Runtime nebo externí klienti nepatřící do Azure Databricks.
Čtenáři a zapisovače Azure Databricks musí používat Databricks Runtime 15.4 LTS nebo vyšší. Pokud čtenáři nebo autoři používají Databricks Runtime 14.3 LTS nebo nižší, přečtěte si Alternativní řešení pro čtenáře a autory v Databricks Runtime 14.3 LTS nebo nižší.
K výpadku může dojít, když čtenáři nebo zapisovači při převodu přistupují k tabulce. Další informace najdete v tématu Převod externí tabulky na spravovanou tabulku katalogu Unity.
Pokud dojde k přerušení příkazu, tabulka může být ponechána jako externí tabulka, protože převod na spravovaný byl neúplný. Pokud chcete příkaz dokončit, spusťte
SET MANAGEDpříkaz znovu v externí tabulce.Prediktivní optimalizace je nastavena na
INHERIT, pokud ji nenakonfigurujete ručně. Pokud chcete zkontrolovat, jestli je povolená prediktivní optimalizace, přečtěte si téma Kontrola, jestli je povolená prediktivní optimalizace.Vrácení zpět: Pokud chcete vrátit migraci tabulky a znovu získat přístup ke zdrojové tabulce v externím katalogu, spusťte
UNSET MANAGEDpříkaz. Po spuštění příkazu se tabulka stane externí tabulkou. Pokud chcete tabulku vrátit do cizí tabulky, přetáhněte ji a v další synchronizaci katalogu ji znovu federujete jako cizí.ALTER TABLE catalog.schema.my_managed_table UNSET MANAGEDVýstraha
Před vyřazením tabulky je nutné spustit
UNSET MANAGED. Odstranění tabulky bez předchozího spuštěníUNSET MANAGEDmůže zanechat systém ve špatném stavu a vést ke ztrátě dat nebo nekonzistencím.Pokud se vrátíte zpět, commity, které jste provedli v externím umístění mezi převodem a vrácením zpět, lze cestovat v čase podle verze, ale ne podle časového razítka. Sedm dní po vrácení zpět se odstraní data ve spravovaném umístění. Pro čtenáře a zapisovače v Databricks Runtime 15.4 LTS nebo vyšší, historie tabulek commitů provedených po převodu, ale před vrácením zpět, umožňuje přecházet mezi verzemi, nikoli však podle časového razítka.
Po převodu tabulky musíte:
- Restartujte všechny úlohy streamování (čtení nebo zápis) pomocí cizí tabulky.
- Ujistěte se, že čtenáři a autoři pracují se spravovanou tabulkou.
COPYPřevede tabulku na spravovanou beze změny nebo zakázání přístupu ke zdrojové tabulce v externím katalogu.
- Během převodu na spravovanou se data ze zdrojové tabulky zkopírují do spravovaného umístění úložiště definovaného pro cizí tabulku a vytvoří se dvě samostatné kopie: nová spravovaná tabulka a zdrojová tabulka v externím katalogu.
- Na rozdíl od
MOVE, kde čtení a zápisy selhávají, při použitíCOPYzodpovídáte za správné zakázání čtení a zápisů do zdrojové tabulky v externím katalogu a za zajištění migrace úloh do nového katalogu. -
Vrácení zpět: Pokud chcete vrátit migraci tabulky zpět, není nutné spustit
UNSET MANAGEDpříkaz, protože zdrojová tabulka nebyla v externím katalogu narušena. Smažte tabulku a při příští synchronizaci katalogu bude znovu federována jako externí.
Kontrola převodu
Můžete potvrdit, že externí tabulka byla převedena na spravovanou tabulku:
DESCRIBE EXTENDED catalog_name.schema_name.table_name
Pokud byla tabulka převedena, Type pod col_name se zobrazí jako MANAGED pod data_type.
Známá omezení
Převod cizích tabulek na spravované tabulky má následující omezení:
Klienti streamování: Po převodu je nutné restartovat všechny úlohy streamování.
Více 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ě cizí tabulky, která se převádí, můžete mít další náklady na přenos dat mezi oblastmi. Poskytovatel cloudu tyto poplatky ukládá mimo kontrolu Azure Databricks. Pokud chcete zkontrolovat umístění schématu, katalogu a metastoru, použijte následující příkazy:
-- Check schema location DESCRIBE SCHEMA EXTENDED catalog_name.schema_name; -- Check catalog location DESCRIBE CATALOG EXTENDED catalog_name; -- Check metastore location DESCRIBE METASTORE;
časté otázky
Můžu vytvářet tabulky i převádět tabulky v cizím katalogu?
Ano, externí nebo spravované tabulky můžete vytvořit v cizím katalogu. Chování závisí na konfiguraci schématu:
-
Pro schémata Glue nebo eHMS, nebo pro schémata se spravovaným umístěním v katalogu Unity: Pokud spustíte
CREATE TABLE foreign_catalog.schema.table, vytvoří se spravovaná nebo externí tabulka v katalogu Unity. Tabulka není odeslána ani synchronizována s externím katalogem. -
Pro schémata z interních připojení do metastore Hive: Pokud se pokusíte vytvořit tabulku v cizím schématu, dojde k vytvoření cizí tabulky a zároveň se vytvoří tabulka v
hive_metastore. - Pro starší verzi metastoru Hive: Protože se jedná o federaci čtení a zápisu, pokud vytvoříte tabulku v cizím katalogu, vytvoří také tabulku v interním metastoru Hive.
Co když jsou moje cizí tabulky založené na DBFS?
Při převodu tabulky, která je podporována DBFS, ukládáme aktuální mapování cesty DBFS na cloudovou cestu jako umístění externí cloudové cesty tabulky.
Můžu převést na úrovni schématu nebo katalogu?
Můžete iterovat přes tabulky ve svých schématech a převádět je jednotlivě, nebo využít projekt discoverx labs k převodu celých schémat nebo katalogů najednou.
df = (dx.from_tables("prod.*.*")
.with_sql("ALTER TABLE {full_table_name} SET MANAGED;")
.apply())