SYNC

A következőkre vonatkozik:igen van bejelölve Databricks SQL igen van bejelölve Databricks Runtime igen van bejelölve csak a Unity Catalog

A SYNC paranccsal frissíthet külső táblákat a Hive Metastore-ban külső táblákra a Unity Catalogban. A SYNC használatával frissítheti a Databricks-munkaterületen kívül tárolt Hive felügyelt táblákat (más néven DBFS-gyökér) a Unity Catalog külső tábláira. Nem használhatja a munkaterület-tárolóban tárolt Hive felügyelt táblák frissítésére. A táblázatok frissítéséhez használja a CREATE TABLE CLONE-t.

A SYNC használatával új táblákat hozhat létre a Unity Katalógusban meglévő Hive Metastore-táblák alapján, valamint frissítheti a Unity Katalógus tábláit, amikor a Hive Metastore forrástábláit módosítják.

A SYNC parancs sémaszinten futtatható a SYNC SCHEMA szintaxissal vagy egy adott táblához a SYNC TABLE szintaxissal.

A parancs egy írási műveletet (ALTER TABLE) hajt végre minden frissített forrástáblán, hogy további táblázattulajdonságokat adjon hozzá a könyveléséhez. Delta-táblák esetén az írási művelet végrehajtásához a parancsot futtató fürtnek vagy SQL Warehouse-nak írási hozzáféréssel kell rendelkeznie a tábla helyéhez.

A Databricks Runtime 12.2 LTS vagy újabb verziójában ez a viselkedés kikapcsolható a Spark-konfiguráció spark.databricks.sync.command.disableSourceTableWritestrue beállításával a SYNC parancs futtatása előtt. Ha trueértékre van állítva, SYNC nem ad hozzá új táblatulajdonságokat, ezért előfordulhat, hogy nem észleli, hogy a táblát korábban frissítették-e a Unity Catalogra. Ebben az esetben kizárólag a tábla nevére támaszkodik annak megállapításához, hogy a táblát korábban frissítették-e a Unity Catalogra. Ha a forrástáblát az utolsó SYNC parancs óta átnevezték, a felhasználónak manuálisan kell átneveznie a céltáblát, mielőtt újra futtatja a SYNC parancsot, amikor a konfiguráció true.

Fontos

Egy SYNC parancs végrehajtásakor a SET TBLPROPERTIES művelet hozzáad egy táblatulajdonságot, amely a unity katalógus külső táblahivatkozását jelzi. Ez a művelet kiszámít egy új Delta-pillanatképet, és új bejegyzést ad hozzá a Delta-napló táblához. Az új bejegyzést a felhőalapú tároló céltábla elérési útjára írja.

Szintaxis

SYNC { SCHEMA target_schema [AS EXTERNAL] FROM source_schema |
       TABLE target_table [AS EXTERNAL] FROM source_table }
  [SET OWNER principal]
  [DRY RUN]

Paraméterek

  • SCHEMA

    SYNC a sémán belüli összes táblát.

    • cél_séma

      Egy meglévő séma a Unity Katalógusban, amelyen belül a felhasználó jogosult táblák létrehozására.

    • forrás séma

      Egy meglévő séma a hive_metastore katalógusban, amely a felhasználó tulajdonában van.

  • TABLE

    SYNC egy önálló táblát.

    • cél_tábla

      Egy új vagy meglévő tábla a Unity Catalogban egy olyan sémában, amelyen belül a felhasználó jogosult táblák létrehozására. Ha a tábla már létezik, akkor frissítve lesz, hogy megfeleljen a source_table-nek, és a felhasználónak birtokolnia kell a táblát. Ha a tábla nem létezik, létrejön.

    • forrás_tábla

      Egy meglévő tábla hive_metastore, amelynek a felhasználó a tulajdonosa.

  • igazgató

    Akár beállíthatja a frissített táblák tulajdonosát a Unity Catalogban principal-ra. Az alapértelmezett tulajdonos az aktuális felhasználó.

  • AS EXTERNAL

    SYNC egy Hive által kezelt tábla vagy séma, amely a Databricks munkaterület tárolóján kívül található, más néven DBFS-gyökér, és amely a Unity Catalog külső tábláihoz van társítva. A AS EXTERNAL nem használható a munkaterület-tárolóban tárolt Hive felügyelt táblák frissítésére.

  • DRY RUN

    Ha megadott, ellenőrzi, hogy a source_table vagy a source_schema belüli táblák frissíthetők-e anélkül, hogy ténylegesen létrehozták vagy frissítenték a céltáblákat. A parancs DRY_RUN_SUCCESS ad vissza, ha egy tábla frissíthető.

  • AS EXTERNAL Databricks Runtime 13.2-s vagy újabb verziójának indításakor ez az opcionális záradék hozzáadható annak megadásához, hogy a hive metaadattárban lévő felügyelt táblák külső táblákként frissüljenek a Unity Catalogban. A SYNC SCHEMAhasználata esetén az összes táblára vonatkozik, beleértve a source_schema. felügyelt tábláit is.

Visszatérítések

Jelentés a következő oszlopokkal:

  • source_schema STRING

    A forrásséma neve. Az NULL séma akkor használandó, ha a forrás egy nem támogatott ideiglenes nézet.

  • source_name STRING NOT NULL

    A forrástábla neve.

  • source_type STRING NOT NULL

    A táblázat típusa: MANAGED vagy EXTERNAL

  • target_catalog STRING NOT NULL

    A célkatalógus a Unity katalógusban, ahol a táblát szinkronizálják.

  • target_schema STRING NOT NULL

    A célséma a Unity Catalogban, ahol a tábla szinkronizálva van.

  • target_name STRING NOT NULL

    Annak a táblának a neve a Unity Katalógusban, amelyhez a forrástábla szinkronizálva van. Ez a név megegyezik a forrástábla nevével.

  • status_code STRING NOT NULL

    A forrástábla SYNC parancsának eredményéhez tartozó állapotkód.

  • description STRING

    Egy leíró üzenet a forrástábla szinkronizálási parancsának állapotáról.

Az általuk visszaadott gyakori állapotkódok SYNC

A SYNC parancs egy egyedi status_code mezőt biztosít a kimenetben az egyes táblákhoz, amelyek a unity katalógusba frissíthetők a frissítés állapotát jelképező módon. Néhány gyakori állapotkód és a hozzájuk kapcsolódó javaslatok a következők:

  • DRY_RUN_SUCCESS: A száraz futtatás sikeres.

    A tábla a SYNC paranccsal frissíthető Unity Catalog-ra.

  • DBFS_ROOT_LOCATION: A Databricks fájlrendszer gyökerében található tábla.

    A tábla a Databricks fájlrendszer gyökérhelyén található. Ez a Unity Katalógusban nem támogatott. Másolja a táblázatadatokat a Unity Katalógus helyére egy CREATE TABLE paranccsal a DEEP CLONE beállítással.

  • EXTERNAL_TABLE_IN_MANAGED_LOCATION: A külső tábla elérési útja nem lehet kezelt tárhely alatt.

    A külső tábla elérési útja a Unity Catalog tárolókezelésében található. Ha a táblának felügyelt tárterület alatt kell lennie, frissítse a táblát felügyelt táblaként egy CREATE TABLE paranccsal a DEEP CLONE beállítással, vagy helyezze át a táblázat helyét a Unity Catalog felügyelt tárolóból.

  • HIVE_SERDE: A táblázat nem jogosult a Hive Metastore-ról a Unity Catalogra való frissítésre. Indok: Hive SerDe tábla.

    A Hive SerDe-táblákat a Unity Catalog nem támogatja. Módosítsa a táblákat Delta formátumra, és adja ki a SYNC parancsot a frissítéshez.

  • INVALID_DATASOURCE_FORMAT: Az adatforrás formátuma nincs megadva, vagy nem támogatott.

    A támogatott adatforrásformátumok egyikének használata: Delta, Parquet, CSV, JSON, ORC, TEXT, AVRO

  • LOCATION_OVERLAP: A bemeneti útvonal átfedésben van más külső táblákkal.

    A tábla helye átfedésben van más külső táblákkal. Használjon másik helyet a táblához, vagy távolítsa el az átfedésben lévő külső táblákat.

  • MULTIPLE_EXT_LOCATIONS: A bemeneti útvonal más külső helyeket is tartalmaz.

    Több külső hely is van, amelyek a megadott táblaútvonal alkönyvtárai. Ellenőrizze, hogy szükség van-e a táblahelyen belüli külső helyekre.

  • MULTIPLE_TARGET_TABLE: Már létezik másik szinkronizált tábla. Forrástáblánként csak egy céltábla engedélyezett.

    A forrástábla már szinkronizálva lett egy másik céltáblával, amely korábban nem engedélyezett. Ha egy másik táblára szeretné kényszeríteni a SYNC, távolítsa el a táblatulajdonságot upgraded_to a forrástáblából, vagy távolítsa el a korábban szinkronizált táblát a Unity Katalógusból, ha már nincs rá szükség.

  • NOT_EXTERNAL: A táblázat nem jogosult a Hive Metastore-ról a Unity Catalogra való frissítésre. Ok: Nem külső tábla.

    SYNC parancs csak a külső táblák Unity Catalogba való migrálását támogatja. Felügyelt táblák esetén hozzon létre egy felügyelt táblát a Unity Catalogban egy CREATE TABLE paranccsal a DEEP CLONE opcióval. Másik lehetőségként használja a AS EXTERNAL záradékot a SYNC paranccsal egy külső tábla létrehozásához a Unity Catalogban.

  • READ_ONLY_CATALOG: Az OpenSharing katalógusban lévő adatok írásvédettek, és nem módosíthatók vagy törölhetők.

    A kiválasztott katalógus egy openSharing katalógus, amely írásvédett. A csak olvasható katalógusban lévő táblák nem frissíthetők a SYNC paranccsal.

  • SUCCESS: A tábla szinkronizálása sikeresen megtörtént.

  • TABLE_ALREADY_EXISTS: A céltábla már létezik.

    A kiválasztott táblával azonos nevű tábla már létezik a Unity Katalógusban. Nevezze át vagy távolítsa el a meglévő táblát a Unity Catalogban, és futtassa újra a SYNC parancsot.

  • TEMP_TABLE_NOT_SUPPORTED: Az ideiglenes táblák és nézetek nem támogatottak.

    Az ideiglenes táblák vagy nézetek nem frissíthetők Unity-katalógusra. Ideiglenes táblák vagy nézetek használatához hozza létre őket a Unity Katalógusban a Unity Catalog SHOW CREATE TABLE parancsával.

  • TIMEOUT: A szinkronizálási tevékenység túllépte az időkorlátot.

    A szinkronizálási tábla parancsfeladatának befejezése több mint 600 másodpercet vett igénybe. Növelje spark.databricks.sync.command.task.timeout másodpercben nagyobb értékre.

    Másik lehetőségként a szinkronizálási sémafeladat időtúllépést is okozhat, ebben az esetben megjelenik egy TimeoutException. Növelje spark.databricks.sync.command.task.create.timeout másodpercben nagyobb értékre.

    Mindkét jelölő alapértelmezett értéke 600. Ha a probléma továbbra is fennáll, forduljon az ügyfélszolgálathoz.

  • VIEWS_NOT_SUPPORTED: Nézetek nem támogatottak.

    Hozza létre manuálisan a nézeteket a Unity Catalog SHOW CREATE TABLE parancsával.

Példák

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

Hibaelhárítás

  • A táblázat megjegyzéseiben nem ASCII-karakterek nem szinkronizálódnak megfelelően

    Ha a parancs használatával frissíti a táblákat a Hive metaadattárból a SYNC Unity Katalógusba, a nem ASCII-karaktereket (például japán vagy kínai szöveget) tartalmazó táblabejegyzések sérültnek tűnhetnek. Előfordulhat például, hogy az érintett megjegyzések kérdőjelek sorozataként (???) jelennek meg, vagy nem jelennek meg a Katalóguskezelőben. A megjegyzések DESCRIBE TABLE EXTENDED lekérdezése azonban a megfelelő értékeket adja vissza.

    Ez a probléma azért fordul elő, mert a Hive metaadattár alapértelmezés szerint a megadott karakterkészlettel tárolhatja a latin1 megjegyzéseket, ami nem támogatja a nem ASCII-karaktereket. Ha a Unity Catalog a megjegyzések lekérésekor nem támogatott karaktereket használ SYNC, előfordulhat, hogy elvesznek vagy megsérülnek.

    Ha nem ASCII-karaktereket szeretne helyreállítani vagy visszaállítani a megjegyzésekben a frissítés SYNCután, futtassa az alábbi parancsot az érintett táblán a Unity Catalogban:

    MSCK REPAIR TABLE <catalog>.<schema>.<table_name> SYNC METADATA;