REPAIR TABLE
Область применения: Databricks SQL Databricks Runtime
Эта команда обновляет метаданные разностной таблицы для службы каталога Unity. Для таблиц, не являющихся разностными, она восстанавливает секции таблицы и обновляет хранилище метаданных Hive.
- Разностные таблицы: при выполнении с разностными таблицами с использованием аргумента
SYNC METADATA
эта команда считывает разностный журнал целевой таблицы и обновляет сведения о метаданных в службе каталога Unity. - Таблицы, не являющиеся разностными: при выполнении с таблицами, которые не являются разностными, эта команда восстанавливает все секции в каталоге таблицы и обновляет хранилище метаданных Hive.
Синтаксис
[ 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 и выше
При создании таблицы, не являющейся разностной, с использованием предложения
PARTITIONED BY
для нее создаются секции и регистрируются в хранилище метаданных Hive. Но если секционированная таблица создается на основе существующих данных, ее секции не регистрируются в хранилище метаданных Hive автоматически. Для регистрации секций выполните инструкциюMSCK REPAIR TABLE
.Еще один способ восстановить секции — использовать инструкцию ALTER TABLE RECOVER PARTITIONS.
Если таблица кэшируется, эта команда очищает кэшированные данные таблицы и все зависимости, которые ссылаются на них. Кэш будет заполняться при следующем обращении к таблице или зависимым параметрам.
- Команда ADD добавляет новые разделы в каталог сеансов для всех вложенных папок в папке базовой таблицы, которые не принадлежат ни одной секции таблицы. ADD является аргументом по умолчанию, если другой параметр не указан.
- Команда DROP удаляет из каталога сеансов все разделы, для которых указанные расположения не существуют в файловой системе.
- Команда Sync является сочетанием команд DROP и ADD.
**
SYNC METADATA
**Считывает разностный журнал целевой таблицы и обновляет сведения о метаданных в службе каталога Unity. Чтобы выполнить эту команду, необходимо иметь права MODIFY и SELECT для целевой таблицы и USAGE для родительской схемы и каталога. Эта команда с этим аргументом завершится ошибкой, если целевая таблица не хранится в каталоге Unity.
Если delta UniForm включен,
SYNC METADATA
активирует ручное преобразование текущих метаданных Delta в метаданные Iceberg и синхронизирует последнюю версию Iceberg для конечной точки каталога Unity Iceberg. См. раздел "Использование UniForm" для чтения таблиц Delta с клиентами Iceberg.
Примеры (таблицы, не являющиеся разностными)
-- 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