Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как удалить функции таблицы 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:
-
checkConstraints
. См. ограничения в Azure Databricks. -
collations-preview
. См. поддержку сортировки для Delta Lake. -
columnMapping
. См. раздел "Переименование и удаление столбцов" с сопоставлением столбцов Delta Lake. -
deletionVectors
. См. раздел "Что такое векторы удаления?". -
typeWidening
. См. расширение типов. -
v2Checkpoint
. См. Совместимость таблиц с жидкой кластеризацией. -
checkpointProtection
. См. раздел "checkpointProtection
Что такое функция таблицы?".
Вы не можете опустить другие функции таблицы Delta .
Внимание
Удаление сопоставления столбцов из таблицы не удаляет случайные префиксы, используемые в именах каталогов для секционированных таблиц. См. Делятся ли Delta Lake и Parquet стратегиями секционирования?.
Некоторые функции Delta Lake позволяют использовать несколько функций таблицы. Некоторые функции таблицы зависят от других функций таблицы и могут блокировать удаление зависимых функций таблицы. Поскольку некоторые функции таблицы не могут быть удалены, это означает, что активирование некоторых функций Delta Lake невозможно откатить.
Databricks рекомендует всегда тестировать зависимые рабочие нагрузки и системы для совместимости с новыми функциями, прежде чем включать функции, которые обновляют протоколы чтения или записи для рабочих данных.
Полностью понижение версий протоколов таблиц для устаревших клиентов
Если для интеграции с внешними клиентами Delta Lake требуются записи, которые не поддерживают checkpointProtection
функцию таблицы, необходимо использовать TRUNCATE HISTORY
для полного удаления всех трассировок отключенных функций таблицы и полностью понижения уровня протокола таблицы.
Databricks рекомендует проверить поведение по умолчанию, DROP FEATURE
прежде чем продолжить работу TRUNCATE HISTORY
. При выполнении TRUNCATE HISTORY
удаляются все журналы таблиц, превышающие 24 часа.
Полная понижение таблицы выполняется в двух шагах, которые должны выполняться не менее 24 часов в течение нескольких часов.
Шаг 1. Подготовка к удалению функции таблицы
На первом этапе пользователь готовится к удалению функции таблицы. Ниже описано, что происходит на этом этапе:
- Вы запускаете команду
ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
. - Параметры таблицы, которые специально включают функцию таблицы, имеют значения, установленные для отключения этой функции.
- Свойства таблицы, управляющие поведением, связанными с удаленной функцией, имеют параметры по умолчанию, заданные до появления функции.
- При необходимости файлы данных и метаданных переписываются с учетом обновленных свойств таблицы.
- Команда завершает выполнение и возвращает сообщение об ошибке, информирующее пользователя о том, что он должен ждать 24 часа, чтобы продолжить удаление компонентов.
После первого отключения функции можно продолжить запись в целевую таблицу перед завершением понижения уровня протокола, но вы не можете использовать функцию таблицы, которая вы удаляете.
Примечание.
Если вы покидаете таблицу в этом состоянии, операции с таблицей не используют функцию таблицы, но протокол по-прежнему поддерживает функцию таблицы. Пока не завершите окончательный шаг понижения, таблица не может читаться клиентами Delta, которые не понимают функцию таблицы.
Шаг 2. Понижение уровня протокола и удаление функции таблицы
Чтобы полностью удалить весь журнал транзакций, связанный с функцией, и изменить протокол:
- По крайней
ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
мере через 24 часа выполните команду. - Клиент подтверждает, что нет транзакций в пределах указанного порога хранения, использующих функцию таблицы, а затем сокращает историю таблицы до этого порога.
- Функция таблицы удаляется во время понижения уровня протокола.
- Если функции таблицы, присутствующих в таблице, могут быть представлены более низкой версией протокола, а
minReaderVersion
minWriterVersion
для таблицы понижена до самой низкой версии, которая поддерживает остальные функции, используемые таблицей Delta.
Внимание
При выполнении ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
удаляются все данные журнала транзакций старше 24 часов. После использования этой команды для понижения уровня протокола таблицы у вас нет доступа к журналу таблиц или путешествию по времени.
См. сведения о совместимости функций Delta Lake и протоколах.