Převod externích nebo cizích tabulek Delta Lake na spravované tabulky Katalogu Unity

Important

Obecně je k dispozici převod externí tabulky na spravovanou tabulku.

Převod cizí tabulky na spravovanou tabulku je ve verzi Public Preview. Podporovány jsou pouze cizí tabulky federované pomocí Hive metastore a Glue Federation.

Pokud chcete převést externí nebo zahraniční tabulku Delta Lake na spravovanou tabulku v katalogu Unity v Azure Databricks, použijte příkaz ALTER TABLE ... SET MANAGED nebo v případě externích tabulek Catalog Explorer. Převod uchovává konfigurace tabulek, včetně názvu, nastavení, oprávnění a zobrazení a zachovává historii tabulek.

Pro převody externích tabulek viz také: SET MANAGED

  • Minimalizuje výpadky čtečky a zapisovače.
  • Zpracovává souběžné zápisy během převodu.
  • Umožňuje vrátit převedenou spravovanou tabulku na externí tabulku.
  • Přesměruje čtení a zápisy na základě cest, aby starší verze kódu po převodu fungovala.

Ačkoli k převodu externí tabulky můžete použít také CREATE TABLE AS SELECT (CTAS), Databricks kvůli těmto výhodám doporučuje SET MANAGED.

Při převodu externích tabulek nastaví Databricks u převedené tabulky prediktivní optimalizaci na INHERIT namísto jejího automatického povolení. Zobrazení cizích tabulek pomocí SQL

Pokud chcete převést cizí tabulky na externí tabulky, přečtěte si téma Převod cizí tabulky na externí tabulku katalogu Unity.

Předpoklady

Externí tabulky

Převod externích tabulek na spravované tabulky má následující požadavky:

  • Formát: Tabulka musí používat formát Delta Lake.
  • Runtime: Abyste mohli používat SET MANAGED, UNSET MANAGED nebo TRUNCATE UNIFORM HISTORY, musíte použít Databricks Runtime 17.3 LTS nebo novější, případně bezserverové výpočetní prostředí.
  • Čtenáři a zapisovači: Azure Databricks čtenáři a zapisovače pro zdrojové tabulky musí používat Databricks Runtime 15.4 LTS nebo vyšší. Pokud vaši čtenáři nebo zapisovače používají verzi 14.3 LTS nebo starší, viz Starší čtečky a zapisovače.
  • Externí klienti: Externí klienti (jiní než Databricks) musí podporovat čtení ze 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.
  • Kompatibilita funkcí: Pokud tabulka obsahuje minReaderVersion=2minWriterVersion=7a tableFeatures={..., columnMapping}příkaz SET MANAGED selže s chybouDELTA_TRUNCATED_TRANSACTION_LOG. Ověřte, jestli tabulka obsahuje tyto vlastnosti pomocí DESCRIBE DETAIL. Viz kompatibilita a protokoly funkcí Delta Lake.

Po převodu jsou operace čtení a zápisu na základě cesty automaticky přesměrovány do nového spravovaného umístění s mírnou zátěží na výkon. Databricks doporučuje migrovat veškerý přístup založený na cestě na pojmenovaný přístup, aby nedocházelo k výkonové zátěži. Viz přesměrování na základě cesty.

Important

Abyste se vyhnuli konfliktům, zrušte všechny existující OPTIMIZE úlohy příkazu (liquid clustering, kompaktace, ZORDER), které pracují s vaší externí tabulkou, a neplánujte žádné úlohy, zatímco převádíte své externí tabulky na spravované tabulky.

Cizí tabulky

Important

Převod cizí tabulky na spravovanou tabulku je ve verzi Public Preview.

Převod cizích tabulek na spravované tabulky má následující požadavky:

  • Formát dat: Cizí tabulka musí používat formá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.
  • Runtime: Databricks Runtime 17.3 nebo vyšší.
  • Typ tabulky: Typ tabulky v metastoru Hive (HMS) musí být externí tabulka HMS. Příkaz selže, pokud je tabulka spravovaná tabulka HMS.
  • Oprávnění: OWNER nebo MANAGE oprávnění k tabulce a CREATE oprávnění pro EXTERNAL LOCATION.

Č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, například DEEP CLONE.

Externí tabulky

Proces převodu externích tabulek používá dvoustupňový přístup:

  1. Počáteční kopírování dat (bez výpadku): Příkaz zkopíruje data tabulky a transakční protokol Delta z externího umístění do spravovaného umístění. Aktivní procesy čtení a zápisu do externí tabulky probíhají bez přerušení.
  2. 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. Při čtení v Databricks Runtime 16.4 LTS a novějším nedochází k žádným výpadkům, ale při čtení v Databricks Runtime 15.4 LTS a starším může docházet k výpadkům.

Následující tabulka ukazuje odhadovaný výpadek na základě velikosti zdrojové tabulky a odhadované propustnosti 0,5–2 GB/ jádra procesoru za minutu:

Velikost tabulky Doporučená velikost clusteru Odhadovaná doba kopírování dat Odhadovaný 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

Note

Výpadek se může lišit v závislosti na faktorech, jako je velikost souboru, počet souborů a počet potvrzení.

Cizí tabulky

Doba výpadku při převodu externí tabulky závisí na tom, zda používáte MOVE, nebo COPY:

  • U MOVE může dojít k výpadkům, jak je popsáno u externích tabulek. Viz Externí tabulky.
  • Za správu výpadků pro COPY nesete odpovědnost, protože proces převodu kopíruje zdrojovou tabulku do spravovaného úložiště a vytváří dvě samostatné kopie dat. Zodpovídáte za zakázání čtení a zápisů do zdrojové tabulky v externím katalogu a migraci úloh tak, aby používaly novou spravovanou tabulku.

Převod na spravovanou tabulku

Převeďte externí tabulku pomocí Průzkumníka katalogu nebo SQL nebo převeďte cizí tabulku pomocí SQL.

Externí tabulky pomocí Průzkumníka katalogu (beta verze)

Important

Převod externích na spravované tabulky pomocí Průzkumníka katalogu je v beta verzi.

Pomocí Průzkumníka katalogu můžete najednou převést jednu nebo více externích tabulek ve schématu.

  1. Přejděte do tabulky nebo schématu, které chcete převést v Průzkumníku katalogu.

  2. 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.

  3. V dialogovém okně Proč migrovat do spravovaných tabulek katalogu Unity? klikněte na Pokračovat.

    Dialogové okno Proč migrovat na tabulky spravované katalogem Unity s tlačítkem Pokračovat

  4. Vyberte externí tabulky, které chcete převést. Pokud jste dialogové okno otevřeli ze stránky podrobností tabulky, Průzkumník katalogu předem vybere vaši tabulku. Na panelu hledání můžete najít další tabulky. Spravované tabulky se nedají vybrat.

    Stránka výběru tabulky zobrazující předem vybranou externí tabulku a nedostupnou spravovanou tabulku

  5. Klikněte na Vytvořit konverzní poznámkový blok.

  6. Volitelně můžete zadat název poznámkového bloku. Ve výchozím nastavení se poznámkový blok uloží do domovské složky. Kliknutím na Procházet ho uložíte do jiného umístění.

    Dialogové okno Vytvořit poznámkový blok pro převod zobrazující pole s názvem a možností Procházet

  7. V poznámkovém bloku si projděte osvědčené postupy a ověřte, že splňujete všechny požadavky.

  8. 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ě.

Externí tabulky pomocí 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ů. Pokud chcete ověřit, zda má vaše tabulka povolené čtení Iceberg, viz Ověřte, že je povoleno čtení Iceberg.

  • Pro externí tabulky služby Unity Catalog bez povoleného čtení Icebergu spusťte následující příkaz:

    ALTER TABLE catalog.schema.my_external_table SET MANAGED;
    

    Po převodu můžete povolit čtení Icebergu ve spravované tabulce bez obav z kompatibility.

  • V případě externích tabulek katalogu Unity s povolenými čteními Icebergu spusťte následující příkaz:

    ALTER TABLE catalog.schema.my_external_table SET MANAGED TRUNCATE UNIFORM HISTORY;
    

    Zahrňte TRUNCATE UNIFORM HISTORY pro zachování optimálního výkonu a kompatibility tabulek. TRUNCATE UNIFORM HISTORY pouze zkracuje historii UniForm Iceberg a neodstraňuje historii Delta. Výsledkem tohoto příkazu je krátký výpadek čtení a zápisu pro Iceberg po zkrácení.

Po převodu tabulky existující streamy pro čtení a zápis selžou. Restartujte streamy se stejnými konfiguracemi, aby se automaticky používalo přesměrování na základě cesty. Ověřte, že čtenáři a autoři pracují se spravovanou tabulkou. Podívejte se na chování streamingu.

Prediktivní optimalizace se po převodu automaticky povolí, pokud ji ručně nevypněte. Viz Ověření, jestli je povolená prediktivní optimalizace.

Azure Databricks uchovává data ve vašem externím umístění služby Unity Catalog po dobu 14 dnů, aby bylo možné provést vrácení změn. Viz Vrátit zpět převod spravované tabulky. Po 14 dnech s povolenou prediktivní optimalizací Azure Databricks tato data automaticky odstraní a uvolní úložiště a ušetří náklady. Pokud vypnete prediktivní optimalizaci, spusťte po 14 dnech na nově převedené spravované tabulce příkaz VACUUM (vyžaduje Databricks Runtime 17.3 LTS nebo vyšší či bezserverové výpočty), abyste sami uvolnili úložiště.

VACUUM my_converted_table

Note

I s povolenou prediktivní optimalizací nemusí být data v externím umístění katalogu Unity po 14 dnech odstraněna. K tomu může dojít například v případě, že se spravovaná tabulka používá zřídka nebo je malá. Pokud předchozí data stále zůstávají, spusťte VACUUM ručně a odstraňte je.

Azure Databricks odstraní pouze data v externí lokalitě. Protokol transakcí Delta a odkaz na tabulku v katalogu Unity se uchovávají.

Cizí tabulky pomocí SQL

Important

Převod cizí tabulky na spravovanou tabulku je ve verzi Public Preview.

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}
  • source_table

    Existující cizí tabulka federovaná v katalogu Unity.

  • MOVE

    Př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. Příklady:

      SELECT * FROM catalog_name.schema_name.table_name;
      
    • Přístup založený na cestě není podporován a po převodu tabulky selže. Příklady:

      SELECT * FROM delta.`protocol://path/to/table`;
      
    • Verze čtečky/zapisovače a požadavky na kompatibilitu klienta jsou stejné jako v částech Požadavky a Starší čtečky a zapisovače.

    • 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 Ověření, jestli je povolená prediktivní optimalizace.

  • COPY

    Př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 službu proces převodu kopíruje data ze zdrojové tabulky do umístění spravovaného úložiště definovaného pro cizí tabulku a vytvoří dvě samostatné kopie: novou spravovanou tabulku a zdrojová tabulka v externím katalogu.
    • Na rozdíl od MOVE, kde čtení a zápisy selhávají, při použití COPY zodpoví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.

Po převodu tabulky je nutné restartovat všechny úlohy streamování (čtení nebo zápis) pomocí cizí tabulky a ověřit, že čtenáři a zapisovače pracují se spravovanou tabulkou.

Před převodem platí, že pokud v externím katalogu odstraníte zdrojovou tabulku, Unity Catalog odstraní také cizí tabulku. Po převodu tabulky na spravovanou, vyřazení zdrojové tabulky v externím katalogu nemá vliv na spravovanou tabulku katalogu Unity.

Pokud se příkaz při kopírování dat přeruší, restartujte ho. Příkaz se obnoví 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.

Ověření převodu

Chcete-li ověřit, že se tabulka úspěšně převedla na spravovanou tabulku, zkontrolujte, zda tabulka Type je MANAGED. Můžete udělat jednu z těchto věcí:

  • Otevřete novou kartu a přejděte do Průzkumníka katalogu. Na kartě Podrobnosti v části O této tabulce se typ tabulky zobrazí jako Spravovaný.

  • Zkontrolujte tabulku Type spuštěním následujícího příkazu SQL:

    DESCRIBE EXTENDED catalog_name.schema_name.table_name
    

    Pokud chcete zkontrolovat více tabulek najednou nebo provést kontrolu pomocí skriptu, zadejte místo toho dotaz information_schema.tables :

    SELECT table_type FROM system.information_schema.tables
    WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';
    

Starší čtenáři a autoři

Databricks doporučuje upgradovat všechny čtenáře a zapisovače na Databricks Runtime 15.4 LTS nebo vyšší, aby bylo možné využívat všechny funkce SET MANAGED, včetně uchovávání historie tabulek.

Stále můžete použít SET MANAGED, pokud používáte čtení nebo zápis v Databricks Runtime 15.3 nebo starší verzi. Po převodu na spravovanou tabulku ale můžete přejít na historická potvrzení pouze podle verze, a ne podle časového razítka.

Pokud se do 14 dnů vrátíte zpět na externí tabulku, cestování v čase ke historickým commitům provedeným před převodem se znovu povolí. Cestování v čase pomocí časových razítek není podporováno pro commity provedené do převedené spravované tabulky mezi převodem a rollbackem. Viz Vrácení zpět převodu spravované tabulky.

Zápis do tabulky po konverzi pomocí Databricks Runtime 15.3 nebo staršího vyžaduje odebrání funkce inCommitTimestamp:

ALTER TABLE <table_name> DROP FEATURE inCommitTimestamp;

Přesměrování na základě cesty

Important

Přesměrování podle cesty je ve Public Preview. Chcete-li se zaregistrovat, vyplňte tento formulář.

V Databricks Runtime 18.1 a novějších, po převodu externí tabulky na spravovanou tabulku Unity Catalog, se čtení a zápisy na předchozí externí umístění automaticky přesměrují na nové spravované umístění. Čtení založené na cestě je kód, například SELECT * FROM delta.`/path/to/my_table. Přesměrování založené na cestě zkracuje čas a úsilí potřebné k migraci do spravovaných tabulek tím, že umožňuje starší verzi kódu, který používá cesty k úložišti, pokračovat v práci bez refaktoringu.

Převody cizích tabulek nepřesměrovávají přístup založený na cestě.

Pro případy použití s nízkou latencí Azure Databricks doporučuje změnit přístupovou cestu na přístup na základě názvů. Přesměrování na základě cesty přidává několik stovek milisekund zpoždění pro každé čtení nebo zápis na základě cesty a vyžaduje, aby původní protokoly Delta zůstaly aktivní v externím umístění Unity Catalogu. Čtení a zápisy založené na názvech nemají další režijní náklady na výkon. Viz Migrace kódu založeného na cestě na název.

Migrace kódu založeného na cestě na název

Pokud se rozhodnete nepoužívat přesměrování založené na cestě, můžete migrovat starší verzi kódu. Při migraci nahraďte odkazy podle cesty odkazy podle názvu.

Následující příklad kódu obsahuje odkaz na tabulku založenou na cestě k souborům:

SELECT * FROM delta.`/path/to/customers_table`;

Nahraďte odkaz založený na cestě odkazem založeným na názvu na externí tabulku, jak ukazuje následující kód:

SELECT * FROM catalog_name.schema_name.customers_table;

Streamovací chování

Streamování s přesměrováním na základě cesty podporuje čtení a zápisy v následujících verzích Databricks Runtime:

  • Čtení se podporuje v Databricks Runtime 18.1 a novějších.
  • Zápisy jsou podporovány v Databricks Runtime verze 18.2 a novější.

Po převodu je nutné restartovat všechny úlohy streamování, abyste se vyhnuli čtení nebo zápisu do předchozího umístění tabulky.

Streamované čtení a zápisy založené na cestě selžou a zastaví se na dalším kontrolním bodu se zprávou o migraci:

  • U čtení datový proud vyvolá chybu: DELTA_STREAMING_INTERRUPTED_BY_MANAGED_TABLE_CONVERSION: The table at <path> has been converted to a Unity Catalog managed table. The stream has been stopped to ensure data consistency. Restart the stream and it will automatically resume from the last committed offset using the converted table.
  • U zápisů vyvolá první mikrodávka po převodu chybu: Operation not allowed: STREAMING WRITE cannot be performed on a table with redirect feature. The no redirect rules are not satisfied [].

Pokud chcete vyřešit chyby, restartujte streamy se stejnými konfiguracemi. Přístup dle cesty se automaticky přesměruje na spravovanou tabulku.

Omezení přesměrování založená na cestě najdete v tématu Omezení.

Řešení potíží se selháními převodu

Tato část popisuje, jak vyřešit běžné problémy při převodu externích tabulek do spravovaných tabulek v Katalogu Unity pomocí SET MANAGED.

VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED

Pokud převod selže, vždy zkuste znovu použít stejnou verzi Databricks Runtime. Metadata mohou být v různých verzích serializována odlišně, což způsobí selhání VERSIONED_CLONE_INTERNAL_ERROR.EXISTING_FILE_VALIDATION_FAILED, pokud převod zopakujete v jiné 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 zkopíroval všechny soubory v nejnovějším snímku tabulky 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:

  1. Zkontrolujte protokoly ovladače Spark a zjistěte, které soubory se nedají migrovat.
  2. Ověřte, že tyto soubory existují ve zdrojovém umístění externí tabulky a jsou přístupné.
  3. Zkuste ALTER TABLE ... SET MANAGED příkaz zopakovat.

Pokud problém přetrvává, obraťte se na podporu Databricks.

Vrátit převod spravované tabulky zpět

Important

Příkazy pro vrácení zpět vyžadují bezserverové výpočty nebo Databricks Runtime 17.3 LTS a novější.

Externí tabulka

Po převodu externí tabulky na spravovanou tabulku můžete pomocí UNSET MANAGED příkazu vrátit zpět do 14 dnů. Tím se aktualizují metadata tabulky tak, aby odkazovala zpět na původní externí umístění. Databricks po převodu zachovává všechny zápisy provedené do spravovaného 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;

Mějte na paměti následující informace:

  • Pokud je příkaz vrácení zpět přerušen nebo selže, spusťte ho znovu a zkuste to znovu.
  • Po návratu zpět musíte restartovat streamovací úlohy, stejně jako při konverzi.
  • Zápisy provedené ve spravovaném umístění mezi konverzí a vrácením umožňují cestování v čase 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í.

Cizí tabulka: MOVE

Warning

Před vyřazením spravované tabulky je nutné spustit UNSET MANAGED . Odstranění tabulky bez předchozího spuštění UNSET MANAGED může vést ke ztrátě dat nebo nekonzistenci.

Migraci tabulky můžete vrátit zpět a znovu získat přístup ke zdrojové tabulce v externím katalogu pomocí UNSET MANAGED příkazu. Vrácení vyžaduje dva kroky: nejprve musíte vrátit tabulku na externí tabulku, poté externí tabulku odstranit, aby se tabulka znovu federovala jako cizí tabulka.

  1. Pokud se chcete vrátit k externí tabulce, spusťte následující příkaz:
ALTER TABLE catalog.schema.my_managed_table UNSET MANAGED
  1. Pokud chcete tabulku znovu federovat do cizí tabulky, přetáhněte externí tabulku pomocí následujícího příkazu:
DROP TABLE catalog.schema.my_managed_table

Cizí tabulka je k dispozici po další synchronizaci katalogu.

Mějte na paměti následující informace:

  • U potvrzení, která jste provedli v externím umístění mezi převodem a vrácením zpět, můžete časově cestovat podle verze, ale ne podle časového razítka.
  • Databricks odstraní data ve spravovaném umístění sedm dní po vrácení zpět.

Cizí tabulka: COPY

Pokud chcete vrátit migraci tabulky zpět, nemusíte příkaz spustit UNSET MANAGED , protože zdrojová tabulka v externím katalogu nebyla změněna. Odstraňte spravovanou tabulku a Databricks ji po další synchronizaci katalogu znovu nafederuje jako cizí tabulku.

Ověření obnovení

U externích a cizích tabulek ověřujte rollbacky odlišně.

Externí tabulky

Chcete-li ověřit, že vaše spravovaná tabulka byla úspěšně převedena zpět na externí tabulku, zkontrolujte, zda tabulka Type je EXTERNAL. Můžete udělat jednu z těchto věcí:

  • Otevřete novou kartu a přejděte do Průzkumníka katalogu. Na kartě Podrobnosti v části O této tabulce se typ tabulky zobrazí jako Externí.

  • Zkontrolujte tabulku Type spuštěním následujícího příkazu SQL:

    DESCRIBE EXTENDED catalog_name.schema_name.table_name
    

    Pokud chcete zkontrolovat více tabulek najednou nebo provést kontrolu pomocí skriptu, zadejte místo toho dotaz information_schema.tables :

    SELECT table_type FROM system.information_schema.tables
    WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';
    

Cizí tabulky

Pokud chcete ověřit, zda byla vaše spravovaná tabulka úspěšně převedena zpět na externí tabulku, zkontrolujte, zda je tabulka TypeFOREIGN. Můžete udělat jednu z těchto věcí:

  • Otevřete novou kartu a přejděte do Průzkumníka katalogu. Na kartě Podrobnosti v části O této tabulce se typ tabulky zobrazí jako Cizí.

  • Spuštěním následujícího příkazu SQL zkontrolujte typ tabulky:

    SELECT table_type FROM system.information_schema.tables
    WHERE table_catalog = 'catalog_name' AND table_schema = 'schema_name' AND table_name = 'table_name';
    

    Sloupec table_type se zobrazí jako FOREIGN.

Note

Nepoužívejte DESCRIBE EXTENDED k ověřování konverzí externích tabulek ani vrácení změn. Federace u tohoto příkazu používá chování katalogu hive_metastore, takže tabulku Type zobrazuje jako EXTERNAL, bez ohledu na skutečný stav tabulky.

Pokročilá témata

Tato část obsahuje pokročilá témata pro převod cizích a externích tabulek na spravované tabulky.

Převod na úrovni schématu nebo katalogu

Máte následující dvě možnosti automatizace převodu tabulek na úrovni schématu nebo katalogu:

  • Iterujte tabulky ve schématech, abyste jednotlivé tabulky převedli jednotlivě.

  • Pomocí projektu discoverx labs můžete převést celá schémata nebo katalogy najednou:

    df = (dx.from_tables("prod.*.*")
    .with_sql("ALTER TABLE {full_table_name} SET MANAGED;")
    .apply())
    

Viz Databricks Labs a discoverx.

Vytváření tabulek v cizím katalogu

V cizím katalogu můžete vytvářet externí nebo spravované tabulky. 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. Databricks tabulku do externího katalogu neodesílá ani ji s ním nesynchronizuje.
  • 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 to má federaci čtení a zápisu, pokud vytvoříte tabulku v cizím katalogu, vytvoří také tabulku v interním metastoru Hive.

Cizí tabulky založené na DBFS

Při převodu tabulky založené na DBFS uloží Databricks aktuální mapování cesty DBFS jako umístění cloudové cesty externí tabulky.

omezení

Převod externích nebo cizích tabulek na spravované tabulky má následující omezení:

  • Historie tabulek pro potvrzení provedená po převodu, ale před vrácením zpět umožňuje cestování podle verze, ale ne podle časového razítka.

  • OpenSharing není plně kompatibilní s příkazem SET MANAGED . Open OpenSharing se podporuje, ale sdílení Databricks do Databricks neaktualizuje automaticky spravované umístění tabulky příjemců. Příjemce bude dál číst ze starého umístění, dokud tabulku znovu nesdílíte. Pokud chcete tabulku znovu sdílet, spusťte následující příkazy:

    ALTER SHARE <share_name> REMOVE TABLE <table_name>;
    ALTER SHARE <share_name> ADD TABLE <table_name> AS <table_share_name> WITH HISTORY;
    
  • 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ě zdrojové tabulky, můžete od svého poskytovatele cloudu získat další náklady na přenos dat mezi oblastmi.

    Pokud chcete ověřit umístění schématu a katalogu, spusťte následující příkazy:

    DESC SCHEMA EXTENDED <catalog_name>.<schema_name>;
    
    DESC CATALOG EXTENDED <catalog_name>;
    

    Pokud chcete ověřit umístění metastoru, spusťte některý z následujících příkazů:

    DESC METASTORE; -- Option 1
    SELECT * FROM system.information_schema.metastores; -- Option 2
    

Omezení přesměrování na základě cesty:

  • Po převodu je nutné restartovat všechny úlohy streamování. Podívejte se na chování streamingu.
  • Přesměrování na základě cesty má pouze zpětnou kompatibilitu pro proces migrace a neumožňuje nový přístup založený na cestě ke spravovaným tabulkám katalogu Unity.

Omezení cizích tabulek: