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