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


Удалите функцию таблицы Delta Lake и понизьте версию протокола таблицы.

В этой статье описывается, как удалить функции таблицы Delta Lake и понизить версии протокола.

Эта функция доступна в Databricks Runtime 16.3 и выше. Не все функции таблицы Delta можно удалить. Узнайте , какие функции таблицы Delta можно удалить?.

Вы должны использовать DROP FEATURE только для поддержки совместимости с более ранними версиями Databricks Runtime, Delta Sharing или внешними клиентами-чтения или записи Delta Lake.

Примечание.

Поддержка прежних версий DROP FEATURE доступна начиная с Databricks Runtime 14.3 LTS. Databricks рекомендует использовать Databricks Runtime 16.3 и более поздних версий для всех DROP FEATURE команд, которые заменяют устаревшее поведение. Для документирования устаревших функций см. раздел "Особенности таблицы Delta (устаревшая версия)".

Удаление функции Delta Lake

Чтобы удалить функцию таблицы, используйте следующий синтаксис:

ALTER TABLE <table-name> DROP FEATURE <feature-name>

Необходимо использовать Databricks Runtime 16.3 или более поздней версии и иметь MODIFY привилегии в целевой таблице Delta. Вы можете удалить только одну функцию таблицы с каждой DROP FEATURE командой.

Дополнительные сведения см. в ALTER TABLE.

Внимание

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

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

Что происходит при удалении функции таблицы?

При удалении функции таблицы Delta Lake атомарно фиксирует изменения в таблице, чтобы выполнить следующие действия:

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

Что такое checkpointProtection функция таблицы?

При удалении элемента Delta Lake перезаписывает данные и метаданные в истории таблицы в виде защищенных контрольных точек для соблюдения требований по понижению уровня протокола. После понижения таблица всегда должна быть доступна для большего числа клиентов. Это связано с тем, что протокол для таблицы теперь отражает, что поддержка удаленной функции больше не требуется для чтения таблицы. Защищенные контрольные точки и checkpointProtection функция выполняют следующие действия:

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

Хотя вы можете удалить только одну функцию таблицы с каждой DROP FEATURE командой, таблица может иметь несколько защищенных контрольных точек и удаленных функций в журнале таблиц.

Все версии среды выполнения Databricks поддерживают checkpointProtection функцию таблицы, т. е. эта функция таблицы не блокирует чтение или запись в Azure Databricks.

Функция таблицы checkpointProtection не должна блокировать доступ только для чтения из клиентов OSS Delta Lake. Чтобы полностью уменьшить уровень таблицы и удалить функцию checkpointProtection таблицы, необходимо использовать TRUNCATE HISTORY. Databricks рекомендует использовать этот паттерн только в случае, если необходимо записать в таблицы с внешними клиентами Delta, которые не поддерживают checkpointProtection. См. Полное понижение протоколов таблиц для устаревших клиентов.

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

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

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

Внимание

Удаление сопоставления столбцов из таблицы не удаляет случайные префиксы, используемые в именах каталогов для секционированных таблиц. См. Делятся ли Delta Lake и Parquet стратегиями секционирования?.

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

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

Полностью понижение версий протоколов таблиц для устаревших клиентов

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

Databricks рекомендует проверить поведение по умолчанию, DROP FEATURE прежде чем продолжить работу TRUNCATE HISTORY. При выполнении TRUNCATE HISTORY удаляются все журналы таблиц, превышающие 24 часа.

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

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

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

  1. Вы запускаете команду ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY.
  2. Параметры таблицы, которые специально включают функцию таблицы, имеют значения, установленные для отключения этой функции.
  3. Свойства таблицы, управляющие поведением, связанными с удаленной функцией, имеют параметры по умолчанию, заданные до появления функции.
  4. При необходимости файлы данных и метаданных переписываются с учетом обновленных свойств таблицы.
  5. Команда завершает выполнение и возвращает сообщение об ошибке, информирующее пользователя о том, что он должен ждать 24 часа, чтобы продолжить удаление компонентов.

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

Примечание.

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

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

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

  1. По крайней ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY мере через 24 часа выполните команду.
  2. Клиент подтверждает, что нет транзакций в пределах указанного порога хранения, использующих функцию таблицы, а затем сокращает историю таблицы до этого порога.
  3. Функция таблицы удаляется во время понижения уровня протокола.
  4. Если функции таблицы, присутствующих в таблице, могут быть представлены более низкой версией протокола, а minReaderVersionminWriterVersion для таблицы понижена до самой низкой версии, которая поддерживает остальные функции, используемые таблицей Delta.

Внимание

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

См. сведения о совместимости функций Delta Lake и протоколах.