REPAIR TABLE
Область применения: Databricks SQL
Databricks Runtime
Эта команда восстанавливает или изменяет разделы для таблиц, отличных от Delta Lake. Используйте условие SYNC METADATA
с Delta Lake для обновления службы каталога на основе метаданных таблицы или для создания метаданных Iceberg для таблиц, настроенных для чтения с помощью Iceberg.
Поддерживаемые функции отличаются между каталогом 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.
Считывает журнал транзакций целевой таблицы и обновляет сведения о метаданных в службе каталога. Для выполнения этой команды необходимо иметь привилегии 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.
Примеры (таблицы без 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