Sdílet prostřednictvím


SYNC

platí pro:zaškrtněte políčko Ano Databricks SQL zaškrtněte políčko Ano Databricks Runtime zaškrtněte políčko Ano 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 trueruč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.

    • target_schema

      Existující schema v Unity Catalog, ve kterém má uživatel oprávnění vytvářet tables.

    • source_schema

      Existující schema v hive_metastorecatalog, které vlastní uživatel.

  • TABLE

    SYNC jedinec table.

    • target_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.

    • source_table

      Existující table v hive_metastore, kterou vlastní uživatel.

  • hlavní

    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ámci source_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í s SYNC SCHEMAse vztahuje na všechny tables, včetně spravovaných tables v source_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 nebo EXTERNAL

  • 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 volbou DEEP CLONE. Alternativně můžete pomocí klauzule AS EXTERNAL s příkazem SYNC 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
  ------------- ----------- ----------- -------------- ------------- ----------- -----------     ---------------------------------
  ...