SYNC

Platí pro:zaškrtnutí označeného ano Pouze katalog Unity Pro Databricks SQL zaškrtnutí označeného ano Databricks zaškrtnutí označeného ano

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í truena 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 trueSYNC 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.

    • target_schema

      Existující schéma v katalogu Unity, ve kterém má uživatel oprávnění vytvářet tabulky.

    • source_schema

      Existující schéma v hive_metastore katalogu, které vlastní uživatel.

  • TABLE

    SYNC jednotlivé tabulky.

    • Target_table

      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.

    • source_table

      Existující tabulka, ve hive_metastore které uživatel vlastní.

  • Hlavní

    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žít AS 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ámci source_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 tabulkami SYNC SCHEMA, včetně spravovaných tabulek v tabulce source_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 nebo EXTERNAL

  • 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 SerDe

    Katalog 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 vlastnost upgraded_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 s DEEP CLONE možností. Případně můžete pomocí AS EXTERNAL klauzule s příkazem SYNC 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
  ------------- ----------- ----------- -------------- ------------- ----------- -----------     ---------------------------------
  ...