Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime
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
SCHEMASYNCa sémán belüli összes táblát.-
Egy meglévő séma a Unity Katalógusban, amelyen belül a felhasználó jogosult táblák létrehozására.
-
Egy meglévő séma a
hive_metastorekatalógusban, amely a felhasználó tulajdonában van.
-
TABLESYNCegy önálló táblát.-
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. -
Egy meglévő tábla
hive_metastore, amelynek a felhasználó a tulajdonosa.
-
-
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 EXTERNALSYNCegy 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. AAS EXTERNALnem használható a munkaterület-tárolóban tárolt Hive felügyelt táblák frissítésére.DRY RUNHa megadott, ellenőrzi, hogy a
source_tablevagy asource_schemabelü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 parancsDRY_RUN_SUCCESSad vissza, ha egy tábla frissíthető.AS EXTERNALDatabricks 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. ASYNC SCHEMAhasználata esetén az összes táblára vonatkozik, beleértve asource_schema.felügyelt tábláit is.
Visszatérítések
Jelentés a következő oszlopokkal:
source_schema STRINGA forrásséma neve. Az
NULLséma akkor használandó, ha a forrás egy nem támogatott ideiglenes nézet.source_name STRING NOT NULLA forrástábla neve.
source_type STRING NOT NULLA táblázat típusa:
MANAGEDvagyEXTERNALtarget_catalog STRING NOT NULLA célkatalógus a Unity katalógusban, ahol a táblát szinkronizálják.
target_schema STRING NOT NULLA célséma a Unity Catalogban, ahol a tábla szinkronizálva van.
target_name STRING NOT NULLAnnak 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 NULLA forrástábla
SYNCparancsának eredményéhez tartozó állapotkód.description STRINGEgy 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
SYNCparanccsal 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 CLONEbeá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 CLONEbeá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
SYNCparancsot 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ágotupgraded_toa 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.SYNCparancs 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 aDEEP CLONEopcióval. Másik lehetőségként használja aAS EXTERNALzáradékot aSYNCparanccsal 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
SYNCparanccsal.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
SYNCparancsot.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.timeoutmá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öveljespark.databricks.sync.command.task.create.timeoutmá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
SYNCUnity 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ésekDESCRIBE TABLE EXTENDEDleké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
latin1megjegyzéseket, ami nem támogatja a nem ASCII-karaktereket. Ha a Unity Catalog a megjegyzések lekérésekor nem támogatott karaktereket használSYNC, 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;