SYNC
Platí pro: Pouze katalog Unity Pro Databricks SQL Databricks
SYNC
Pomocí příkazu upgradujte externí tabulky v metastoru Hive na externí tabulky v katalogu Unity. Můžete také použít SYNC
k upgradu spravovaných tabulek Hive uložených mimo úložiště pracovních prostorů Databricks (někdy označované jako kořen DBFS) na externí tabulky v katalogu Unity. Nemůžete ji použít k upgradu spravovaných tabulek Hive uložených v úložišti pracovního prostoru. Pokud chcete tyto tabulky upgradovat, použijte PŘÍKAZ CREATE TABLE CLONE.
Můžete použít SYNC
k vytvoření nových tabulek v katalogu Unity z existujících tabulek Metastore Hive a také aktualizovat tabulky Katalogu Unity při úpravě zdrojových tabulek v Metastore Hive.
Příkaz SYNC
lze spustit na úrovni schématu SYNC SCHEMA
pomocí syntaxe nebo pro jednotlivé tabulky pomocí SYNC TABLE
syntaxe.
Příkaz provede operaci zápisu (ALTER TABLE
) pro každou zdrojovou tabulku, kterou upgraduje, a přidá některé další vlastnosti tabulky pro své uchovávání knih.
Pokud chcete v případě tabulek Delta provést operaci zápisu clusteru nebo SQL Warehouse, která spouští příkaz, musí mít přístup k zápisu do umístění tabulky.
V Databricks Runtime 12.2 LTS nebo novějším můžete toto chování vypnout nastavením konfigurace spark.databricks.sync.command.disableSourceTableWrites
Sparku na true
před spuštěním SYNC
příkazu. Při nastavení true
na hodnotu , SYNC
nepřidá nové vlastnosti tabulky, a proto nemusí zjistit, zda byla tabulka dříve upgradována na Katalog Unity.
V takovém případě se výhradně spoléhá na název tabulky a určí, jestli byla tabulka dříve upgradována na katalog Unity.
Pokud byla zdrojová tabulka přejmenována od posledního příkazu SYNC, musí uživatel před opětovným spuštěním příkazu true
SYNC znovu přejmenovat cílovou tabulku ručně.
Důležité
SYNC
Při spuštění příkazu operace SET TBLPROPERTIES
přidá vlastnost tabulky, která označuje cílový odkaz externí tabulky Unity Catalog. Tato operace vypočítá nový snímek Delta a přidá novou položku do protokolu Delta tabulky, která zapíše do cílové cesty k tabulce v cloudovém úložišti.
Syntaxe
SYNC { SCHEMA target_schema [AS EXTERNAL] FROM source_schema |
TABLE target_table [AS EXTERNAL] FROM source_table }
[SET OWNER principal]
[DRY RUN]
Parametry
SCHEMA
SYNC
všechny tabulky v rámci schématu.-
Existující schéma v katalogu Unity, ve kterém má uživatel oprávnění vytvářet tabulky.
-
Existující schéma v
hive_metastore
katalogu, které vlastní uživatel.
-
TABLE
SYNC
jednotlivé tabulky.-
Nová nebo existující tabulka v katalogu Unity ve schématu, ve kterém má uživatel oprávnění vytvářet tabulky. Pokud tabulka již existuje, je nahrazena tak, aby odpovídala
source_table
, a uživatel musí také vlastnit tabulku. Pokud tabulka neexistuje, vytvoří se. -
Existující tabulka, ve
hive_metastore
které uživatel vlastní.
-
-
Volitelně můžete nastavit vlastníka upgradovaných tabulek v katalogu Unity na
principal
. Výchozím vlastníkem je aktuální uživatel. AS EXTERNAL
SYNC
Spravovaná tabulka nebo schéma Hive uložené mimo úložiště pracovního prostoru Databricks (někdy označované jako kořen DBFS) do externích tabulek v katalogu Unity. Nejde použítAS EXTERNAL
k upgradu spravovaných tabulek Hive uložených v úložišti pracovního prostoru.DRY RUN
Když zadáte, zkontroluje, jestli
source_table
je možné upgradovat tabulky v rámcisource_schema
, aniž by se cílové tabulky ve skutečnosti vytvářely nebo upgradovaly. Příkaz vrátíDRY_RUN_SUCCESS
, pokud je možné upgradovat tabulku.AS EXTERNAL
Spuštění databricks Runtime 13.2 a vyšší, tato volitelná klauzule může být přidána k určení, že spravované tabulky v metastoru Hive se upgradují jako externí tabulky v katalogu Unity. Pokud se používá se všemi tabulkamiSYNC SCHEMA
, včetně spravovaných tabulek v tabulcesource_schema.
Návraty
Sestava s následujícími sloupci:
source_schema STRING
Název zdrojového schématu. Schéma je
NULL
, pokud je zdrojem nepodporované dočasné zobrazení.source_name STRING NOT NULL
Název zdrojové tabulky.
source_type STRING NOT NULL
Typ tabulky:
MANAGED
neboEXTERNAL
target_catalog STRING NOT NULL
Cílový katalog v katalogu Unity, kde se tabulka synchronizuje.
target_schema STRING NOT NULL
Cílové schéma v katalogu Unity, kde se tabulka synchronizuje.
target_name STRING NOT NULL
Název tabulky v katalogu Unity, do které se zdrojová tabulka synchronizuje. Tento název odpovídá názvu zdrojové tabulky.
status_code STRING NOT NULL
Stavový kód pro výsledek
SYNC
příkazu pro zdrojovou tabulku.description STRING
Popisná zpráva o stavu příkazu synchronizace pro zdrojovou tabulku
Běžné stavové kódy vrácené SYNC
Příkaz SYNC
poskytuje ve výstupu jedinečné status_code
pole pro upgrade každé tabulky na katalog Unity představující stav upgradu.
Mezi běžné stavové kódy a doporučení k jejich řešení patří:
DRY_RUN_SUCCESS
: Suchý běh proběhl úspěšně.Tabulku je možné upgradovat na Katalog Unity pomocí
SYNC
příkazu.DBFS_ROOT_LOCATION
: Tabulka umístěná v kořenovém adresáři systému souborů Databricks.Tabulka se nachází v kořenovém umístění systému souborů Databricks. Toto není podporováno v katalogu Unity. Zkopírujte data tabulky do umístění katalogu Unity pomocí příkazu CREATE TABLE s
DEEP CLONE
možností.EXTERNAL_TABLE_IN_MANAGED_LOCATION
: Cesta k externí tabulce nemůže být ve spravovaném úložišti.Cesta zadaná pro externí tabulku je ve správě úložiště katalogu Unity. Pokud musí být tabulka pod spravovaným úložištěm, upgradujte tabulku jako spravovanou tabulku pomocí příkazu CREATE TABLE s
DEEP CLONE
možností nebo přesuňte umístění tabulky ze spravovaného úložiště Katalogu Unity.HIVE_SERDE
: Tabulka nemá nárok na upgrade z metastoru Hive na katalog Unity. Důvod: Tabulka Hive SerDeKatalog Unity nepodporuje tabulky Hive SerDe. Změňte tabulky na rozdílový formát a zadejte
SYNC
příkaz pro upgrade.INVALID_DATASOURCE_FORMAT
: Formát zdroje dat není zadán nebo není podporován.Použijte jeden z podporovaných formátů zdroje dat: Delta, Parquet, CSV, JSON, ORC, TEXT
LOCATION_OVERLAP
: Vstupní cesta se překrývají s jinými externími tabulkami.Umístění tabulky se překrývají s jinými externími tabulkami. Pro tabulku použijte jiné umístění nebo odeberte překrývající se externí tabulky.
MULTIPLE_EXT_LOCATIONS
: Vstupní cesta obsahuje další externí umístění.Existuje více než jedno externí umístění, které jsou podadresářem zadané cesty k tabulce. Zkontrolujte, jestli jsou potřeba externí umístění v umístění tabulky.
MULTIPLE_TARGET_TABLE
: Již existuje jiná synchronizovaná tabulka. Je povolena pouze jedna cílová tabulka na zdrojová tabulka.Zdrojová tabulka se už synchronizovala s jinou cílovou tabulkou, která ještě není povolená. Pokud chcete vynutit
SYNC
použití jiné tabulky, odeberte vlastnostupgraded_to
tabulky ze zdrojové tabulky nebo odeberte dříve synchronizovanou tabulku z katalogu Unity, pokud ji už nepotřebujete.NOT_EXTERNAL
: Tabulka nemá nárok na upgrade z metastoru Hive na katalog Unity. Důvod: Nejedná se o externí tabulku.SYNC
příkaz podporuje pouze migraci externích tabulek do katalogu Unity. Pro spravované tabulky vytvořte spravovanou tabulku v katalogu Unity pomocí příkazu CREATE TABLE sDEEP CLONE
možností. Případně můžete pomocíAS EXTERNAL
klauzule s příkazemSYNC
vytvořit externí tabulku v katalogu Unity.READ_ONLY_CATALOG
: Data v katalogu sdílení Delta jsou určená jen pro čtení a nelze je upravovat ani odstraňovat.Zvolený katalog je rozdílový katalog sdílení, který je jen pro čtení. Tabulky v katalogu jen pro čtení nelze aktualizovat pomocí
SYNC
příkazu.SUCCESS
: Tabulka byla úspěšně synchronizována.TABLE_ALREADY_EXISTS
: Cílová tabulka již existuje.Tabulka se stejným názvem jako vybraná tabulka již v katalogu Unity existuje. Přejmenujte nebo odeberte existující tabulku v katalogu Unity a spusťte
SYNC
příkaz znovu.TEMP_TABLE_NOT_SUPPORTED
: Dočasné tabulky nebo zobrazení nejsou podporovány.Dočasné tabulky nebo zobrazení nelze upgradovat na katalog Unity. Pokud chcete použít dočasné tabulky nebo zobrazení, vytvořte je znovu v Katalogu Unity pomocí příkazu SHOW CREATE TABLE v katalogu Unity.
TIMEOUT
: Vypršel časový limit úlohy synchronizace.Dokončení úlohy příkazu synchronizace trvalo déle než 300 sekund. Zvýšení
spark.databricks.sync.command.task.timeout
na vyšší hodnotu v sekundách Výchozí hodnota je 300. Pokud chyba přetrvává, obraťte se na podporu.VIEWS_NOT_SUPPORTED
: Zobrazení nejsou podporována.Znovu vytvořte zobrazení ručně pomocí příkazu SHOW CREATE TABLE v katalogu Unity.
Příklady
-- Sync an existing hive metastore table hive_metastore.default.my_tbl to a Unity Catalog
-- table named main.default.my_tbl.
> SYNC TABLE main.default.my_tbl FROM hive_metastore.default.my_tbl;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
default my_tbl external main default my_tbl SUCCESS Table main.default.my_tbl synced.
-- Sync an existing managed hive metastore table hive_metastore.default.my_tbl to an external table named main.default.my_tbl in Unity Catalog.
> SYNC TABLE main.default.my_tbl AS EXTERNAL FROM hive_metastore.default.my_tbl;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
default my_tbl managed main default my_tbl SUCCESS Table main.default.my_tbl synced.
-- SYNC a table in DRY RUN mode to evaluate the upgradability of the hive metastore table.
> SYNC TABLE main.default.my_tbl FROM hive_metastore.default.my_tbl DRY RUN;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- --------------- ---------------------------------
default my_tbl external main default my_tbl DRY_RUN_SUCCESS
-- SYNC all the eligible tables in schema hive_metastore.mydb to a Unity Catalog schema main.my_db_uc.
-- The upgraded tables in main.my_db_uc will be owned by alf@melmak.et
> SYNC SCHEMA main.my_db_uc FROM hive_metastore.my_db SET OWNER `alf@melmak.et`;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...
-- DRY RUN mode of SYNC SCHEMA to evaluate all the tables in a schema
-- hive_metastore.mydb for upgrading to Unity Catalog.
> SYNC SCHEMA main.my_db_uc FROM hive_metastore.my_db DRY RUN;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...
-- Sync all tables including managed tables in a schema hive_metastore.mydb
-- as external tables in Unity Catalog.
> SYNC SCHEMA main.my_db_uc AS EXTERNAL FROM hive_metastore.my_db;
source_schema source_name source_type target_catalog target_schema target_name status_code description
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...
Související články
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro