SYNC
platí pro: Databricks SQL Databricks Runtime Unity pouze Catalog
Pomocí příkazu SYNC
upgradujte externí tables v metastoru Hive na externí tables v Unity Catalog. Můžete také použít SYNC
k upgradu spravovaného tables Hive, který je uložený mimo úložiště pracovního prostoru Databricks (někdy označované jako kořen DBFS), na externí tables v Unity Catalog. Nemůžete ho použít k upgradu spravovaného tables Hive uloženého v úložišti pracovního prostoru. Pokud chcete tyto tablesupgradovat, použijte CREATE TABLE CLONE.
SYNC
můžete použít k vytvoření nových tables v Unity Catalog z existujícího metastoru Hive tables, stejně jako k update Unity Catalogtables, když jsou zdrojové tables v metastoru Hive upraveny.
Příkaz SYNC
lze spustit na úrovni schema pomocí syntaxe SYNC SCHEMA
nebo pro jednotlivé table pomocí syntaxe SYNC TABLE
.
Příkaz provede operaci zápisu (ALTER TABLE
) pro každý zdroj table, který aktualizuje, aby přidal některé dodatečné table vlastnosti pro evidenci.
V případě Delta tables, cluster nebo SQL Warehouse, který spouští příkaz, musí mít přístup k zápisu do umístění table, aby mohl provést operaci zápisu.
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. Pokud je set až true
, SYNC
nepřidá nové table vlastnosti, a proto nemusí zjistit, zda byl table dříve upgradován na Unity Catalog.
V takovém případě se výhradně spoléhá na název table k určení, zda table byl dříve upgradován na Unity Catalog.
Pokud byl zdrojový table přejmenován od posledního příkazu SYNC, musí uživatel před opětovným spuštěním příkazu SYNC při true
ručně přejmenovat cílový table .
Důležité
Když se spustí příkaz SYNC
, operace SET TBLPROPERTIES
přidá vlastnost table označující cílovou Catalog externí table reference Unity. Tato operace vypočítá nový snímek Delta a přidá novou položku do protokolu Delta table, a zapíše ji do cesty cílového table 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]
Parameters
SCHEMA
SYNC
veškeré tables v rámci schema.-
Existující schema v Unity Catalog, ve kterém má uživatel oprávnění vytvářet tables.
-
Existující schema v
hive_metastore
catalog, které vlastní uživatel.
-
TABLE
SYNC
jedinec table.-
Nový nebo existující table v Unity Catalog v schema, ve kterém má uživatel oprávnění vytvářet tables. Pokud table již existuje, je nahrazena tak, aby odpovídala
source_table
, a uživatel musí také vlastnit table. Pokud table neexistuje, vytvoří se. -
Existující table v
hive_metastore
, kterou vlastní uživatel.
-
-
Volitelně set vlastníka upgradovaného tables v Unity Catalog na
principal
. Výchozím vlastníkem je aktuální uživatel. AS EXTERNAL
SYNC
spravované table Nebo schema Hive, které jsou uložené mimo úložiště pracovního prostoru Databricks (někdy označované jako kořen DBFS) k externím tables v Unity Catalog.AS EXTERNAL
nemůžete použít k upgradu spravovaného tables Hive uloženého v úložišti pracovního prostoru.DRY RUN
Když je zadáno, zkontroluje, zda je možné
source_table
nebo tables v rámcisource_schema
upgradovat, aniž by se skutečně vytvořilo nebo upgradovalo cílové tables. Příkaz vrátíDRY_RUN_SUCCESS
, pokud je možné upgradovat table.AS EXTERNAL
Spuštění databricks Runtime 13.2 a vyšší, můžete tuto volitelnou klauzuli přidat k určení, že spravované tables v metastoru Hive se upgradují jako externí tables v Unity Catalog. Při použití sSYNC SCHEMA
se vztahuje na všechny tables, včetně spravovaných tables vsource_schema.
Návraty
Zpráva s následujícími columns:
source_schema STRING
Název zdroje schema. schema je
NULL
, pokud je zdrojem nepodporované dočasné zobrazení.source_name STRING NOT NULL
Název zdroje table.
source_type STRING NOT NULL
Typ table:
MANAGED
neboEXTERNAL
target_catalog STRING NOT NULL
Cíl catalog v Unity Catalogwhere je synchronizován table.
target_schema STRING NOT NULL
Cíl schema v Unity Catalogwhere je synchronizovaný table.
target_name STRING NOT NULL
Název table v Unity Catalog, ke kterému je zdroj table synchronizován. Tento název odpovídá zdrojovému table názvu.
status_code STRING NOT NULL
Stavový kód pro výsledek příkazu
SYNC
pro zdroj table.description STRING
Popisná zpráva o stavu příkazu sync pro zdrojovou table.
Běžné stavové kódy vrácené SYNC
Příkaz SYNC
poskytuje ve výstupu jedinečné pole status_code
pro každý table, který se má upgradovat na Catalog 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ě.table je možné upgradovat na Unity Catalog pomocí příkazu
SYNC
.DBFS_ROOT_LOCATION
: Table umístěné v kořenovém adresáři systému souborů Databricks.table se nachází v kořenovém umístění systému souborů Databricks. To není podporováno v Unity Catalog. Zkopírujte data table do umístění Unity Catalog pomocí příkazu CREATE TABLE s volbou
DEEP CLONE
.EXTERNAL_TABLE_IN_MANAGED_LOCATION
: Externí cesta table nemůže být ve spravovaném úložišti.Cesta zadaná pro externí table je v rámci Unity Catalog spravované úložiště. Pokud table musí být pod spravovaným úložištěm, upgradujte table jako spravovanou table pomocí příkazu CREATE TABLE s možností
DEEP CLONE
nebo přesuňte table umístění mimo spravované úložiště Unity Catalog.HIVE_SERDE
: table nemá nárok na provedení upgradu z Hive Metastore na CatalogUnity. Důvod: Hive SerDe Table.Unity Catalognepodporuje Hive SerDe tables. Změňte tables na formát Delta a zadejte příkaz
SYNC
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ývá s jinou externí tables.Umístění table se překrývá s jinými externími tables. Pro table nebo remove překrývající se externí tablespoužijte jiné umístění.
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 table. Zkontrolujte, zda jsou potřebná externí umístění v oblasti table.
MULTIPLE_TARGET_TABLE
: Již existuje jiná synchronizovaná table. Pro každý zdrojový table je povolený pouze jeden cílový table.Zdroj table byl již dříve synchronizován s jiným cílem table, což není povoleno. Pokud chcete vynutit
SYNC
na jiný table, remove vlastnost tableupgraded_to
ze zdrojového table, nebo pokud už ji nepotřebujete, remove dříve synchronizované table z Unity Catalog.NOT_EXTERNAL
: Table nemá nárok na upgrade z metastoru Hive na Unity Catalog. Důvod: Žádný externí table.Příkaz
SYNC
podporuje pouze migraci externích tables do Unity Catalog. Pro spravované tablesvytvořte spravovanou table v Unity Catalog pomocí příkazu CREATE TABLE s volbouDEEP CLONE
. Alternativně můžete pomocí klauzuleAS EXTERNAL
s příkazemSYNC
vytvořit externí table v Unity Catalog.READ_ONLY_CATALOG
: Data v Delta sdílení catalog jsou pouze pro čtení a nemožno je upravit ani smazat.Zvolená catalog je rozdílové sdílení catalog, které je určeno pouze pro čtení. Tables v rámci catalog jen pro čtení nelze aktualizovat pomocí příkazu
SYNC
.SUCCESS
: Table byly úspěšně synchronizovány.TABLE_ALREADY_EXISTS
: Cílová table již existuje.table se stejným názvem jako zvolený table již v Unity Catalogexistuje . Přejmenujte nebo remove existující table v Unity Catalog a spusťte příkaz
SYNC
znovu.TEMP_TABLE_NOT_SUPPORTED
: Dočasné tables nebo views se nepodporují.Dočasné tables nebo views nelze povýšit na Unity Catalog. Pokud chcete použít dočasné tables nebo views, vytvořte je znovu v Unity Catalog pomocí příkazu SHOW CREATE TABLE v Unity Catalog.
TIMEOUT
: vypršel časový limit úkolu Sync.Dokončení úlohy sync příkazu 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
: Views se nepodporují.Znovu vytvořte views ručně pomocí příkazu SHOW CREATE TABLE v Unity Catalog.
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
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...