Udostępnij za pośrednictwem


SYNC

Dotyczy:zaznaczone jako tak Databricks SQL zaznaczone jako tak Databricks Runtime zaznaczone jako tak 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.

    • target_schema

      Istniejąca schema w środowisku Unity Catalog, w której użytkownik ma uprawnienia do tworzenia tables.

    • source_schema

      Istniejąca schema w hive_metastorecatalog, która jest własnością użytkownika.

  • TABLE

    SYNC osoba table.

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

    • source_table

      Istniejący table w hive_metastore, który jest własnością użytkownika.

  • główny

    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 w source_schema bez faktycznego tworzenia lub uaktualniania docelowego tables. Polecenie zwraca DRY_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 z SYNC SCHEMA, ma zastosowanie do wszystkich tables, łącznie z zarządzanymi tables w source_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 lub EXTERNAL

  • 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 klauzuli AS EXTERNAL z poleceniem SYNC, 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
  ------------- ----------- ----------- -------------- ------------- ----------- -----------     ---------------------------------
  ...