SYNC
Dotyczy: Databricks SQL Databricks Runtime Unity tylko Catalog
Użyj polecenia SYNC
, aby zaktualizować zewnętrzne tables w Hive Metastore do zewnętrznego tables w Unity Catalog. Można również użyć SYNC
do uaktualnienia Hive-owskich zarządzanych tables przechowywanych poza magazynem przestrzeni roboczych Databricks (czasami nazywanym katalogiem głównym systemu plików DBFS) do zewnętrznych tables w Unity Catalog. Nie można jej używać do uaktualniania zarządzanych tables hive przechowywanych w magazynie przestrzeni roboczej. Aby uaktualnić te tables, użyj CREATE TABLE CLONE.
Za pomocą SYNC
można tworzyć nowe tables w Unity Catalog z istniejącego katalogu metadanych Hive tables oraz aktualizować update w Unity Catalogtables, gdy zmodyfikowane są zasoby tables w magazynie metadanych Hive.
Polecenie SYNC
można uruchomić na poziomie schema przy użyciu składni SYNC SCHEMA
lub pojedynczej table przy użyciu składni SYNC TABLE
.
Polecenie wykonuje operację zapisu (ALTER TABLE
) do każdego źródła, table uaktualnia, aby dodać kilka dodatkowych table właściwości na potrzeby jego księgowania.
W przypadku Delta tables, aby wykonać operację zapisu, klaster lub SQL Warehouse, który uruchamia polecenie, musi mieć dostęp do zapisu w lokalizacji table.
W środowisku Databricks Runtime 12.2 LTS lub nowszym to zachowanie można wyłączyć, ustawiając konfigurację spark.databricks.sync.command.disableSourceTableWrites
platformy Spark na przed true
uruchomieniem SYNC
polecenia. Jeśli wystąpi sytuacja od set do true
, SYNC
nie dodaje nowych właściwości table i dlatego może nie wykryć, czy table został wcześniej zaktualizowany do Unity Catalog.
W takim przypadku polega wyłącznie na nazwie table, aby określić, czy table został wcześniej uaktualniony do Unity Catalog.
Jeśli źródło table zostało przemianowane od ostatniego polecenia SYNC, użytkownik musi ręcznie zmienić nazwę miejsca docelowego table zanim ponownie uruchomisz polecenie SYNC, kiedy konfiguracja to true
.
Ważne
Po wykonaniu polecenia SYNC
, operacja SET TBLPROPERTIES
dodaje właściwość table wskazującą docelowe zewnętrzne odwołanie table w Unity Catalog. Ta operacja oblicza nową migawkę Delta i dodaje nowy wpis do dziennika Delta table, zapisując do docelowej ścieżki table w magazynie w chmurze.
Składnia
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
wszystkie tables w schema.-
Istniejąca schema w środowisku Unity Catalog, w której użytkownik ma uprawnienia do tworzenia tables.
-
Istniejąca schema w
hive_metastore
catalog, która jest własnością użytkownika.
-
TABLE
SYNC
osoba table.-
Nowa lub istniejąca table w środowisku Unity Catalog w schema, w której użytkownik ma uprawnienia do tworzenia tables. Jeśli table już istnieje, zostanie zamieniony, aby odpowiadał
source_table
, a użytkownik musi również być właścicielem table. Jeśli numer table nie istnieje, zostanie on utworzony. -
Istniejący table w
hive_metastore
, który jest własnością użytkownika.
-
-
Opcjonalnie set przypisz właściciela uaktualnionego tables w środowisku Unity Catalog do
principal
. Domyślnym właścicielem jest bieżący użytkownik. AS EXTERNAL
SYNC
zarządzanych przez Hive table lub schema przechowywanych poza przestrzenią roboczą w usłudze Databricks (czasami nazywaną katalogiem głównym systemu plików DBFS) do zewnętrznych tables w Unity Catalog. Nie można użyćAS EXTERNAL
do uaktualnienia zarządzanych zasobów tables przechowywanych w magazynie obszaru roboczego.DRY RUN
Po określeniu sprawdza, czy możliwe jest uaktualnienie
source_table
lub tables wsource_schema
bez faktycznego tworzenia lub uaktualniania docelowego tables. Polecenie zwracaDRY_RUN_SUCCESS
, jeśli można uaktualnić table.AS EXTERNAL
Uruchamianie środowiska Databricks Runtime 13.2 lub nowszego można dodać tę klauzulę opcjonalną, aby określić, że zarządzane tables w magazynie metadanych hive są uaktualniane jako zewnętrzne tables w środowisku Unity Catalog. W przypadku użycia zSYNC SCHEMA
, ma zastosowanie do wszystkich tables, łącznie z zarządzanymi tables wsource_schema.
Zwraca
Raport z następującymi elementami columns:
source_schema STRING
Nazwa źródła schema. schema jest
NULL
, jeśli źródło jest nieobsługiwanym widokiem tymczasowym.source_name STRING NOT NULL
Nazwa źródła table.
source_type STRING NOT NULL
Typ table:
MANAGED
lubEXTERNAL
target_catalog STRING NOT NULL
Docelowa catalog w środowisku Unity Catalogwheretable jest synchronizowana.
target_schema STRING NOT NULL
Cel schema w środowisku Unity Catalogwheretable jest synchronizowany.
target_name STRING NOT NULL
Nazwa table w środowisku Unity Catalog, do której jest synchronizowane źródło table. Ta nazwa odpowiada nazwie table źródłowej.
status_code STRING NOT NULL
Kod stanu dla wyniku polecenia
SYNC
dla źródła table.description STRING
Opisowy komunikat o stanie polecenia sync dla tableźródłowego .
Typowe kody stanu zwracane przez SYNC
Polecenie SYNC
udostępnia unikatowe pole status_code
w danych wyjściowych dla każdego table, które ma zostać uaktualnione do Unity Catalog określającego stan uaktualnienia.
Niektóre typowe kody stanu wraz z zaleceniami dotyczącymi ich rozwiązywania są następujące:
DRY_RUN_SUCCESS
: Przebieg suchy zakończył się pomyślnie.table można uaktualnić do Unity Catalog przy użyciu polecenia
SYNC
.DBFS_ROOT_LOCATION
: Table znajduje się w katalogu głównym systemu plików usługi Databricks.table znajduje się w lokalizacji głównej systemu plików usługi Databricks. To nie jest obsługiwane w Unity Catalog. Skopiuj dane table do lokalizacji Catalog Unity używając polecenia CREATE TABLE z opcją
DEEP CLONE
.**
EXTERNAL_TABLE_IN_MANAGED_LOCATION
: Zewnętrzna ścieżka table nie może znajdować się w magazynie zarządzanym.Ścieżka podana dla zewnętrznego table znajduje się w zarządzanej przestrzeni dyskowej Unity Catalog. Jeśli table musi znajdować się w zarządzanym magazynie, uaktualnij table jako zarządzany table, używając polecenia CREATE TABLE z opcją
DEEP CLONE
lub przenieś lokalizację table poza zarządzany magazyn Unity Catalog.HIVE_SERDE
: table nie kwalifikuje się do aktualizacji z Hive Metastore do Unity Catalog. Przyczyna: Hive SerDe Table.Hive SerDe tables nie są obsługiwane przez system Unity Catalog. Zmień tables na format delta i wydaj polecenie
SYNC
, aby uaktualnić.INVALID_DATASOURCE_FORMAT
: nie określono formatu źródła danych lub nie jest obsługiwany.Użyj jednego z obsługiwanych formatów źródła danych: Delta, Parquet, CSV, JSON, ORC, TEXT
LOCATION_OVERLAP
: ścieżka wejściowa nakłada się na inne tableszewnętrzne.Lokalizacja table nakłada się na zewnętrzne tables. Użyj innej lokalizacji dla zewnętrznych table lub remove nakładających się na tables.
MULTIPLE_EXT_LOCATIONS
: ścieżka wejściowa zawiera inne lokalizacje zewnętrzne.Istnieje więcej niż jedna lokalizacja zewnętrzna, które są podkatalogami podanej ścieżki table. Sprawdź, czy lokalizacje zewnętrzne w lokalizacji oznaczonej jako table są niezbędne.
MULTIPLE_TARGET_TABLE
: istnieje już inna zsynchronizowana table. Dozwolona jest tylko jedna jednostka docelowa table na jednostkę źródłową table.Źródło table zostało już wcześniej zsynchronizowane z innym celem table, co nie jest dozwolone. Aby wymusić
SYNC
innej table, removeupgraded_to
właściwości table z table źródłowej lub remove wcześniej zsynchronizowanej table z Catalog aparatu Unity, jeśli nie jest już potrzebna.NOT_EXTERNAL
: Table nie kwalifikuje się do uaktualnienia z Hive Metastore do Unity Catalog. Przyczyna: Nie jest zewnętrzny table.polecenie
SYNC
obsługuje tylko migrację zewnętrznego tables do Unity Catalog. Aby zarządzać tables, utwórz zarządzaną table w środowisku Unity Catalog, wykorzystując polecenie CREATE TABLE z opcjąDEEP CLONE
. Alternatywnie użyj klauzuliAS EXTERNAL
z poleceniemSYNC
, aby utworzyć zewnętrzne table w środowisku Unity Catalog.READ_ONLY_CATALOG
: Dane wewnątrz Delta sharing catalog są tylko do odczytu i nie można ich modyfikować ani usuwać.Wybrany catalog to współdzielony catalog, który jest w trybie tylko do odczytu. Tables w catalog tylko do odczytu nie można zaktualizować przy użyciu polecenia
SYNC
.SUCCESS
: Table pomyślnie zsynchronizowano.TABLE_ALREADY_EXISTS
: Obiekt docelowy table już istnieje.W Catalogśrodowisku Unity istnieje już table o nazwie takiej samej jak wybrana table. Zmień nazwę lub remove istniejące table w środowisku Unity Catalog i uruchom ponownie polecenie
SYNC
.TEMP_TABLE_NOT_SUPPORTED
: tymczasowe tables lub views nie są obsługiwane.Nie można uaktualnić tymczasowej tables ani views do Unity Catalog. Aby użyć tymczasowej tables lub views, utwórz je ponownie w środowisku Unity Catalog przy użyciu polecenia SHOW CREATE TABLE w środowisku Unity Catalog.
TIMEOUT
: przekroczono limit czasu zadania Sync.Wykonanie zadania polecenia sync trwało ponad 300 sekund. Zwiększ
spark.databricks.sync.command.task.timeout
wartość do wyższej w sekundach. Wartość domyślna to 300. Jeśli błąd będzie się powtarzać, skontaktuj się z pomocą techniczną.VIEWS_NOT_SUPPORTED
: Views nie są obsługiwane.Utwórz ponownie views ręcznie przy użyciu polecenia SHOW CREATE TABLE w środowisku Unity Catalog.
Przykłady
-- 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
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...