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


REPAIR TABLE

Применяется к:отмечен флажок Databricks SQL отмечен флажок Databricks Runtime

Эта команда восстанавливает или изменяет секции для таблиц.

SYNC METADATA Используйте предложение Delta Lake для обновления службы каталога на основе метаданных таблицы или создания метаданных Apache 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 и выше, check marked yes является необязательным.

Параметры

  • table_name

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

  • ADDили DROPSYNCPARTITIONS

    Применяется к:отмечено галочкой 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.enabledtrue, то целевые обновления метаданных таблицы автоматически синхронизируются со службой каталога. В противном случае может понадобиться ручная синхронизация с помощью 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