Поделиться через


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 версий является необязательным.

Параметры

  • table_name

    Название таблицы. Если не удается найти таблицу Azure Databricks, возникает ошибка TABLE_OR_VIEW_NOT_FOUND .

  • ADD или DROP или SYNCPARTITIONS

    Область применения: флажок 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