Удаление возможностей таблицы Delta
Внимание
Поддержка отключения функций таблицы Delta и понижения версий протокола доступна в общедоступной предварительной версии в Databricks Runtime версии 14.1 и выше.
Azure Databricks обеспечивает ограниченную поддержку удаления функций таблицы. Чтобы удалить функцию таблицы, необходимо выполнить следующее:
- Отключите свойства таблицы, использующие функцию таблицы.
- Удалите все следы функции таблицы из файлов данных, поддерживающих таблицу.
- Удалите записи транзакций, использующие функцию таблицы из журнала транзакций.
- Понижение уровня протокола таблицы.
Где поддерживается, эту функцию следует использовать только для поддержания совместимости с более ранними версиями Databricks Runtime, Delta Sharing или другими клиентами для чтения или записи Delta Lake.
Внимание
Все DROP FEATURE
операции конфликтуют со всеми параллельными операциями записи.
Потоковое чтение завершается сбоем при обнаружении фиксации, изменяющей метаданные таблицы. Чтобы сохранить поток, необходимо перезапустить его. Рекомендуемые методы см . в разделе "Рекомендации по рабочей среде" для структурированной потоковой передачи.
Как удалить функцию разностной таблицы?
Чтобы удалить возможность таблицы Delta, выполните команду ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY]
. См. ALTER TABLE.
Необходимо использовать Databricks Runtime 14.1 или более поздней версии и иметь права MODIFY
в целевой таблице Delta.
Какие функции таблицы Delta можно удалить?
Вы можете удалить следующие функции таблицы Delta:
-
checkConstraints
. См . ограничения в Azure Databricks. -
collations-preview
. См. поддержку сортировки для Delta Lake. -
columnMapping
. См. о переименовании и удалении столбцов с использованием сопоставления столбцов Delta Lake. -
deletionVectors
. См. раздел " Что такое векторы удаления?". -
typeWidening-preview
. См . расширение типов. -
v2Checkpoint
. См. совместимость для таблиц с кластеризацией жидкости.
Вы не можете опустить другие функции таблицы Delta .
Включение функций таблицы для удаления устаревших функций
Для команды DROP FEATURE
требуются версии протокола, поддерживающие чтение и запись функции таблицы. Функции delta, такие как columnMapping
и checkConstraints
поддерживаются в более ранних версиях протокола. В зависимости от других функций, включенных в таблице, может потребоваться обновить версии протокола, прежде чем удалить эти функции.
Для обновления версий средства чтения таблиц и записи можно использовать следующую команду, которая позволяет удалить сопоставление столбцов и снизить уровень протокола:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.minReaderVersion' = '3',
'delta.minWriterVersion' = '7'
)
Каким образом удаляются особенности таблицы Delta?
Так как функции таблицы Delta представляют протоколы чтения и записи, они должны полностью отсутствовать в журнале транзакций для полного удаления. Удаление функции происходит на двух этапах и требует времени, чтобы пройти до завершения. Особенности удаления компонентов зависят от функции, но в следующем разделе представлен общий обзор.
Подготовка к удалению функции таблицы
На первом этапе пользователь готовится к удалению функции таблицы. Ниже описано, что происходит на этом этапе:
- Пользователь запускает
DROP FEATURE
команду. - Параметры таблицы, которые специально включают функцию таблицы, имеют значения, установленные для отключения этой функции.
- Свойства таблицы, управляющие поведением, связанными с удаленной функцией, имеют параметры по умолчанию, заданные до появления функции.
- При необходимости файлы данных и метаданных переписываются с учетом обновленных свойств таблицы.
- Команда завершает выполнение и возвращает сообщение об ошибке, информирующее пользователя о том, что он должен ждать 24 часа, чтобы продолжить удаление компонентов.
После первого отключения функции можно продолжить запись в целевую таблицу перед завершением понижения уровня протокола, но не удается использовать функцию таблицы, которая вы удаляете.
Примечание.
Если вы покидаете таблицу в этом состоянии, операции с таблицей не используют функцию таблицы, но протокол по-прежнему поддерживает функцию таблицы. Пока не завершите окончательный шаг понижения, таблица не может читаться клиентами Delta, которые не понимают функцию таблицы.
Понижение уровня протокола и удаление функции таблицы
Чтобы удалить функцию таблицы, необходимо удалить всю историю транзакций, связанную с функцией, и изменить протокол.
- По крайней мере через 24 часа пользователь снова выполняет
DROP FEATURE
команду с предложениемTRUNCATE HISTORY
. - Клиент подтверждает, что ни одна из транзакций в указанном пороге хранения не использует функцию таблицы, а затем усекает историю таблиц до этого порога.
- Протокол понижен, отключена поддержка таблиц.
- Если функции таблицы, присутствующих в таблице, могут быть представлены устаревшей версией протокола,
minReaderVersion
иminWriterVersion
для таблицы будут понижены до самой низкой версии, которая поддерживает именно все остальные функции, используемые в таблице Delta.
Внимание
При выполнении ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
удаляются все данные журнала транзакций старше 24 часов. После удаления функции Delta-таблицы у вас нет доступа к истории таблиц или возможности путешествия во времени.
См. статью Как Azure Databricks управляет совместимостью функций Delta Lake?.