Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется к: Databricks SQL
Databricks Runtime
Эта команда восстанавливает или изменяет секции для таблиц.
Используйте условие SYNC METADATA
с Delta Lake для обновления службы каталога на основе метаданных таблицы или для создания метаданных Iceberg для таблиц, настроенных для чтения с помощью Iceberg. Не используйте SYNC METADATA
при изменении секций для таблиц, отличных от Delta Lake.
Поддерживаемые функции зависят от того, регистрируются ли таблицы в каталоге Unity или хранилище метаданных Hive, а также от того, поддерживаются ли таблицы Delta Lake.
Синтаксис
[ MSCK ] REPAIR TABLE table_name
{
[ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}
Для отмеченных галочкой Databricks SQL и Databricks Runtime 12.2 LTS и выше, MSCK
является необязательным.
Параметры
-
Имя таблицы. Если таблица не найдена, Azure Databricks вызывает ошибку TABLE_OR_VIEW_NOT_FOUND .
ADD
илиDROP
SYNC
PARTITIONS
Применяется к:
Databricks SQL
Databricks Runtime 10.4 LTS и выше
При создании таблицы, отличной от Delta, с помощью предложения
PARTITIONED BY
секции создаются и регистрируются в хранилище метаданных Hive. Однако если создать секционированную таблицу из существующих данных, секции не регистрируются автоматически в хранилище метаданных Hive. Для регистрации разделов запуститеMSCK REPAIR TABLE
.Другой способ восстановления разделов — использовать ALTER TABLE ВОССТАНОВЛЕНИЕ РАЗДЕЛОВ.
Если таблица кэшируется, команда очищает кэшированные данные таблицы и все зависимые от нее данные. Кэш заполняется в следующий раз, когда производится доступ к таблице или её зависимостям.
- Команда ADD добавляет новые разделы в каталог сеансов для всех подпапок базовой папки таблицы, которые не принадлежат ни к каким разделам таблицы. ADD — это аргумент по умолчанию, если другой параметр не указан.
- Команда DROP удаляет все секции из каталога сеансов, которые имеют не существующие расположения в файловой системе.
- SYNC — это сочетание DROP и ADD.
SYNC METADATA
Только Delta Lake.
Если задана конфигурация
spark.databricks.delta.catalog.update.enabled
true
, то целевые обновления метаданных таблицы автоматически синхронизируются со службой каталога. В противном случае может понадобиться ручная синхронизация с помощьюREPAIR TABLE table_name SYNC METADATA
.Считывает журнал транзакций целевой таблицы и обновляет сведения о метаданных в службе каталога. Для выполнения этой команды необходимо иметь привилегии MODIFY и SELECT в целевой таблице и USE SCHEMA и USE CATALOG привилегии родительской схемы и каталога.
Этот аргумент работает с хранилищем метаданных Hive в Databricks Runtime 16.1 и выше. Для таблиц хранилища метаданных Hive необходимо иметь права USAGE и MODIFY.
Если Delta UniForm включен (требуется Unity Catalog),
SYNC METADATA
запускает ручное преобразование текущих метаданных Delta в метаданные Iceberg и синхронизирует последнюю версию Iceberg для конечной точки Unity Catalog Iceberg. Смотрите "Чтение таблиц Delta с помощью клиентов Iceberg".Вы можете использовать
REPAIR TABLE table_name SYNC METADATA
для применения модели разрешений каталога Unity к мелким клонам, которые вы читаете из внешнего каталога, созданного с помощью федерации хранилища метаданных Hive. См. статью "Работа с мелкими клонами".
Примеры (таблицы без Delta Lake)
-- create a partitioned table from existing data /tmp/namesAndAges.parquet
> CREATE TABLE t1 (name STRING, age INT) USING parquet PARTITIONED BY (age)
LOCATION "/tmp/namesAndAges.parquet";
-- SELECT * FROM t1 does not return results
> SELECT * FROM t1;
-- run MSCK REPAIR TABLE to recovers all the partitions
> MSCK REPAIR TABLE t1;
-- SELECT * FROM t1 returns results
> SELECT * FROM t1;
name age
------- ---
Michael 20
Justin 19
Andy 30
Пример (таблица каталога Unity)
-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA