SYNC
Область применения: только каталог Unity среды выполнения Databricks SQL Databricks
SYNC
Используйте команду для обновления внешних таблиц в хранилище метаданных Hive до внешних таблиц в каталоге Unity. Вы также можете использовать SYNC
для обновления управляемых таблиц Hive, хранящихся за пределами хранилища рабочей области Databricks (иногда называемого корнем DBFS) до внешних таблиц в каталоге Unity. Его нельзя использовать для обновления управляемых таблиц Hive, хранящихся в хранилище рабочей области. Чтобы обновить эти таблицы, используйте CREATE TABLE CLONE.
Вы можете создавать SYNC
новые таблицы в каталоге Unity из существующих таблиц хранилища метаданных Hive, а также обновлять таблицы каталога Unity при изменении исходных таблиц в хранилище метаданных Hive.
Команда SYNC
может выполняться на уровне схемы с помощью SYNC SCHEMA
синтаксиса или отдельной таблицы с помощью синтаксиса SYNC TABLE
.
Команда выполняет операцию записи (ALTER TABLE
) в каждую исходную таблицу, в которой она обновляется, чтобы добавить некоторые дополнительные свойства таблицы для ее хранения.
В случае с разностной таблицей для выполнения операции записи кластер или хранилище SQL, которая выполняет команду, должна иметь доступ на запись к расположению таблицы.
В Databricks Runtime 12.2 LTS или более поздней версии это поведение можно отключить, задав конфигурацию spark.databricks.sync.command.disableSourceTableWrites
Spark для true
выполнения SYNC
команды. Если задано значение true
, SYNC
не добавляет новые свойства таблицы и поэтому может не определить, была ли таблица обновлена до каталога Unity.
В этом случае она использует исключительно имя таблицы, чтобы определить, была ли таблица обновлена до каталога Unity.
Если исходная таблица была переименована с момента последней команды SYNC, пользователь должен вручную переименовать целевую таблицу перед повторной выполнением команды SYNC при true
настройке.
Внимание
SYNC
При выполнении SET TBLPROPERTIES
команды операция добавляет свойство таблицы, указывающее ссылку на внешнюю таблицу каталога Unity. Эта операция вычисляет новый моментальный снимок Delta и добавляет новую запись в журнал разностной таблицы, записывая в целевой путь к таблице в облачном хранилище.
Синтаксис
SYNC { SCHEMA target_schema [AS EXTERNAL] FROM source_schema |
TABLE target_table [AS EXTERNAL] FROM source_table }
[SET OWNER principal]
[DRY RUN]
Параметры
SCHEMA
SYNC
все таблицы в схеме.-
Существующая схема в каталоге Unity, в которой пользователь может создавать таблицы.
-
Существующая схема в каталоге
hive_metastore
, принадлежавшая пользователю.
-
TABLE
SYNC
отдельная таблица.-
Новая или существующая таблица в каталоге Unity в схеме, в которой пользователь может создавать таблицы. Если таблица уже существует, она заменена на соответствие
source_table
, и пользователь также должен владеть таблицей. Если таблица не существует, она будет создана. -
Существующая таблица, в
hive_metastore
которой принадлежит пользователь.
-
-
При необходимости задайте для владельца обновленных таблиц в каталоге
principal
Unity значение . Владелец по умолчанию — текущий пользователь. AS EXTERNAL
SYNC
Управляемая таблица Hive или схема, хранящуюся вне хранилища рабочих областей Databricks (иногда называемая корневым каталогом DBFS) во внешние таблицы в каталоге Unity. Нельзя использоватьAS EXTERNAL
для обновления управляемых таблиц Hive, хранящихся в хранилище рабочей области.DRY RUN
При указании проверяет, можно ли
source_table
обновить таблицы или таблицыsource_schema
без фактического создания или обновления целевых таблиц. Команда возвращаетсяDRY_RUN_SUCCESS
, если таблицу можно обновить.AS EXTERNAL
Начиная с Databricks Runtime 13.2 и выше, это необязательное предложение можно добавить, чтобы указать, что управляемые таблицы в хранилище метаданных hive обновляются как внешние таблицы в каталоге Unity. При использованииSYNC SCHEMA
с ним применяется ко всем таблицам, включая управляемые таблицы вsource_schema.
Возвраты
Отчет со следующими столбцами:
source_schema STRING
Имя исходной схемы. Схема заключается в том
NULL
, что источник является неподдерживаемым временным представлением.source_name STRING NOT NULL
Имя исходной таблицы.
source_type STRING NOT NULL
Тип таблицы:
MANAGED
илиEXTERNAL
target_catalog STRING NOT NULL
Целевой каталог в каталоге Unity, где синхронизируется таблица.
target_schema STRING NOT NULL
Целевая схема в каталоге Unity, в которой синхронизирована таблица.
target_name STRING NOT NULL
Имя таблицы в каталоге Unity, с которой синхронизируется исходная таблица. Это имя соответствует имени исходной таблицы.
status_code STRING NOT NULL
Код состояния для результата
SYNC
команды исходной таблицы.description STRING
Описательное сообщение о состоянии команды синхронизации для исходной таблицы.
Стандартные коды состояния, возвращаемые SYNC
Команда SYNC
предоставляет уникальное status_code
поле в выходных данных для каждой таблицы, которая будет обновлена до каталога Unity, представляющего состояние обновления.
Ниже приведены некоторые распространенные коды состояния, а также рекомендации по их устранению:
DRY_RUN_SUCCESS
: успешное выполнение сухого выполнения.Таблицу можно обновить до каталога Unity с помощью
SYNC
команды.DBFS_ROOT_LOCATION
: таблица, расположенная в корне файловой системы Databricks.Таблица находится в корневом расположении файловой системы Databricks. Это не поддерживается в каталоге Unity. Скопируйте данные таблицы в расположение каталога Unity с помощью команды CREATE TABLE с параметром.
DEEP CLONE
EXTERNAL_TABLE_IN_MANAGED_LOCATION
: внешний путь к таблице не может находиться в управляемом хранилище.Путь, заданный для внешней таблицы, находится в каталоге Unity, управляемом хранилищем. Если таблица должна находиться в управляемом хранилище, обновите таблицу как управляемую таблицу с помощью команды CREATE TABLE с
DEEP CLONE
параметром или переместите расположение таблицы из управляемого хранилища каталога Unity.HIVE_SERDE
: таблица не подходит для обновления из хранилища метаданных Hive в каталог Unity. Причина: таблица Hive SerDe.Таблицы Hive SerDe не поддерживаются каталогом Unity. Измените таблицы в разностном
SYNC
формате и выполните команду для обновления.INVALID_DATASOURCE_FORMAT
: формат источника данных не указан или не поддерживается.Используйте один из поддерживаемых форматов источника данных: Delta, Parquet, CSV, JSON, ORC, TEXT
LOCATION_OVERLAP
: входной путь перекрывается другими внешними таблицами.Расположение таблицы перекрывается другими внешними таблицами. Используйте другое расположение для таблицы или удалите перекрывающиеся внешние таблицы.
MULTIPLE_EXT_LOCATIONS
: входной путь содержит другие внешние расположения.Существует несколько внешних расположений, которые являются подкаталогами предоставленного пути таблицы. Проверьте, необходимы ли внешние расположения в расположении таблицы.
MULTIPLE_TARGET_TABLE
: другая синхронизированная таблица уже существует. Допускается только одна целевая таблица на исходную таблицу.Исходная таблица уже синхронизирована с другой целевой таблицей, которая ранее не разрешена. Чтобы принудительно
SYNC
выполнить переход к другой таблице, удалите свойствоupgraded_to
таблицы из исходной таблицы или удалите ранее синхронизированную таблицу из каталога Unity, если она больше не нужна.NOT_EXTERNAL
: таблица не подходит для обновления из хранилища метаданных Hive в каталог Unity. Причина. Не внешняя таблица.SYNC
команда поддерживает только перенос внешних таблиц в каталог Unity. Для управляемых таблиц создайте управляемую таблицу в каталоге Unity с помощью команды CREATE TABLE с параметром.DEEP CLONE
Кроме того, используйтеAS EXTERNAL
предложение сSYNC
командой для создания внешней таблицы в каталоге Unity.READ_ONLY_CATALOG
: данные в каталоге разностного общего доступа доступны только для чтения и не могут быть изменены или удалены.Выбранный каталог — это каталог разностного общего доступа, который доступен только для чтения. Таблицы в каталоге только для чтения нельзя обновить с помощью
SYNC
команды.SUCCESS
: таблица успешно синхронизирована.TABLE_ALREADY_EXISTS
: целевая таблица уже существует.Таблица с тем же именем, что и выбранная таблица, уже существует в каталоге Unity. Переименуйте или удалите существующую таблицу в каталоге
SYNC
Unity и выполните команду повторно.TEMP_TABLE_NOT_SUPPORTED
: временные таблицы или представления не поддерживаются.Временные таблицы или представления нельзя обновить до каталога Unity. Чтобы использовать временные таблицы или представления, повторно создайте их в каталоге Unity с помощью команды SHOW CREATE TABLE в каталоге Unity.
TIMEOUT
: время ожидания задачи синхронизации.Задача команды синхронизации заняла более 300 секунд. Увеличение
spark.databricks.sync.command.task.timeout
до более высокого значения в секундах. Значение по умолчанию — 300. Если ошибка сохраняется, обратитесь в службу поддержки.VIEWS_NOT_SUPPORTED
: представления не поддерживаются.Повторно создайте представления вручную с помощью команды SHOW CREATE TABLE в каталоге Unity.
Примеры
-- 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
------------- ----------- ----------- -------------- ------------- ----------- ----------- ---------------------------------
...