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


Удаление функций разностной таблицы

Внимание

Поддержка удаления функций разностной таблицы и версий протокола понижения доступна в общедоступной предварительной версии в Databricks Runtime 14.1 и выше.

Azure Databricks обеспечивает ограниченную поддержку удаления функций таблицы. Чтобы удалить функцию таблицы, необходимо выполнить следующее:

  • Отключите свойства таблицы, использующие функцию таблицы.
  • Удалите все трассировки функции таблицы из файлов данных, резервных копий таблицы.
  • Удалите записи транзакций, использующие функцию таблицы из журнала транзакций.
  • Понижение уровня протокола таблицы.

Если поддерживается, эту функцию следует использовать только для поддержки совместимости с более ранними версиями Databricks Runtime, Delta Sharing или другими клиентами чтения Delta Lake или записи.

Внимание

Все DROP FEATURE операции конфликтуют со всеми параллельными операциями записи.

Потоковые операции чтения завершаются сбоем при обнаружении фиксации, которая изменяет метаданные таблицы. Чтобы сохранить поток, необходимо перезапустить его. Рекомендуемые методы см . в разделе "Рекомендации по рабочей среде" для структурированной потоковой передачи.

Как удалить функцию разностной таблицы?

Чтобы удалить функцию разностной ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY] таблицы, выполните команду. См. статью ALTER TABLE.

Необходимо использовать Databricks Runtime 14.1 или более поздней версии и иметь MODIFY привилегии в целевой таблице Delta.

Какие функции таблицы Delta можно удалить?

Вы можете удалить следующие функции таблицы Delta:

Вы не можете удалить другие функции таблицы Delta.

Включение функций таблицы для удаления устаревших функций

Для DROP FEATURE выполнения команды требуются версии протокола, поддерживающие чтение и запись функций таблицы. Функции delta, такие как columnMapping и checkConstraints поддерживаются в более ранних версиях протокола. В зависимости от других функций, включенных в таблице, может потребоваться обновить версии протокола, прежде чем удалить эти функции.

Для обновления версий средства чтения таблиц и записи можно использовать следующую команду, которая позволяет удалить сопоставление столбцов и снизить уровень протокола:

ALTER TABLE <table-name> SET TBLPROPERTIES (
  'delta.minReaderVersion' = '3',
  'delta.minWriterVersion' = '7'
)

Как удалены функции таблицы Delta?

Так как функции разностной таблицы представляют протоколы чтения и записи, они должны быть полностью отсутствуют в журнале транзакций для полного удаления. Удаление функции происходит на двух этапах и требует времени, чтобы пройти до завершения. Особенности удаления компонентов зависят от функции, но в следующем разделе представлен общий обзор.

Подготовка к удалению функции таблицы

На первом этапе пользователь готовится к удалению функции таблицы. Ниже описано, что происходит на этом этапе:

  1. Пользователь запускает DROP FEATURE команду.
  2. Свойства таблицы, которые специально позволяют компоненту таблицы, имеют значения, заданные для отключения функции.
  3. Свойства таблицы, управляющие поведением, связанными с удаленной функцией, имеют параметры по умолчанию, заданные до появления функции.
  4. При необходимости файлы данных и метаданных переписываются с учетом обновленных свойств таблицы.
  5. Команда завершает выполнение и возвращает сообщение об ошибке, информирующее пользователя о том, что он должен ждать 24 часа, чтобы продолжить удаление компонентов.

После первого отключения функции можно продолжить запись в целевую таблицу перед завершением понижения уровня протокола, но не удается использовать функцию таблицы, которая вы удаляете.

Примечание.

Если вы покидаете таблицу в этом состоянии, операции с таблицей не используют функцию таблицы, но протокол по-прежнему поддерживает функцию таблицы. Пока не завершите окончательный шаг понижения, таблица не может читаться клиентами Delta, которые не понимают функцию таблицы.

Понижение уровня протокола и удаление функции таблицы

Чтобы удалить функцию таблицы, необходимо удалить всю историю транзакций, связанную с функцией, и изменить протокол.

  1. По крайней мере через 24 часа пользователь снова выполняет DROP FEATURE команду с предложением TRUNCATE HISTORY .
  2. Клиент подтверждает, что транзакции в заданном пороге хранения не используют функцию таблицы, а затем усечение журнала таблиц до этой транзакции.
  3. Протокол понижен, убрав функцию таблицы.
  4. Если функции таблицы, которые присутствуют в таблице, могут быть представлены устаревшей версией протокола, а minReaderVersion minWriterVersion для таблицы понижена до самой низкой версии, которая поддерживает именно все остальные функции, используемые таблицей Delta.

Внимание

При выполнении ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY удаляются все данные журнала транзакций старше 24 часов. После удаления функции разностной таблицы у вас нет доступа к журналу таблиц или путешествию по времени.

Узнайте, как Azure Databricks управляет совместимостью функций Delta Lake?.