Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье представлен обзор протоколов Delta Lake, функций таблиц и совместимости с клиентами Delta Lake для операций чтения и записи.
Журнал транзакций для таблицы Delta содержит сведения о версиях протокола. Посмотрите подробности таблицы Delta Lake и выполните её детальное описание .
Как протокол таблицы указывает совместимость чтения и записи?
Каждая таблица Delta содержит спецификацию протокола, которая указывает набор возможностей, необходимых для чтения и записи в таблицу. Спецификация протокола используется приложениями, которые считывают или записывают в таблицу, чтобы определить, могут ли они обрабатывать все функции, поддерживаемые таблицей. Если приложение не знает, как обрабатывать функцию, которая указана как поддерживаемая в протоколе таблицы, то это приложение не сможет читать или записывать эту таблицу.
Большинство новых возможностей и функций, добавленных в Delta Lake, требуют обновления протокола таблицы.
В следующей таблице представлен обзор ключевых терминов, используемых для описания протоколов Delta Lake:
Срок | Описание |
---|---|
Клиент Delta Lake | Любая система, которая считывает или записывает данные в таблицу Delta. |
Читать протокол | Указывает поддержку, необходимую для клиента Delta Lake для чтения таблицы. |
Протокол записи | Указывает поддержку, необходимую для клиента Delta Lake для записи в таблицу. |
minReaderVersion |
Компонент протокола чтения. Допустимые значения: 1 , 2 или 3 . |
minWriterVersion |
Компонент протокола записи. Допустимые значения — целые числа от 2 до 7. |
Функция таблицы | Альтернатива с детализированным подходом к версиям протокола. Функции таблиц сопоставляются с функциями Delta Lake, которые могут быть включены при необходимости. |
Функция писателя | Функция таблицы, привязанная к протоколу записи. |
Функция чтения | Функция таблицы, привязанная к протоколу чтения. |
Протоколы записи и функции записи влияют только на совместимость с клиентами записи, что означает, что доступ только для чтения к таблице из устаревших рабочих нагрузок по-прежнему поддерживается. Протоколы чтения и функции чтения влияют как на совместимость чтения, так и на совместимость записи.
Не все функции Delta Lake совместимы друг с другом.
Некоторые функции таблицы нельзя удалить после включения. См. Управление функцией удаления таблицы Delta Lake и понижение протокола таблицы.
Функции таблиц для совместимости протокола
В Databricks Runtime 12.2 LTS и более поздних версиях Databricks использует функции таблицы для указания поддержки функций и совместимости с средствами чтения и записи. Функции таблицы используют детализированные флаги, чтобы указать, какие функции поддерживаются данной таблицей. Функции таблиц заменяют устаревшую схему управления версиями протокола, введя новые функции в протокол Delta Lake.
Функции записи таблиц указывают на функции , влияющие на способ записи данных. Функции записи таблиц требуют minWriterVersion
== 7. Функции, реализованные как функции записи, не блокируют клиенты чтения.
Функции чтения таблиц указывают на функции , влияющие на способ чтения данных. Все функции чтения таблиц также являются функциями записи таблиц. Функции чтения таблиц требуют minReaderVersion
== 3 и minWriterVersion
== 7. Клиент не может записывать данные в таблицу, которую она не может читать.
Если функции таблицы включены, все функции, поддерживаемые протоколом для таблицы, отображаются в соответствующих списках как readerFeatures
или writerFeatures
. При удалении функциональных возможностей из таблицы таблица может изменить это поведение, чтобы понизиться до минимально возможного уровня протокола. См. самый низкий возможный протокол.
Версии протокола на основе целых чисел и устаревшая совместимость
Все таблицы включают в себя версию протокола, основанную на целых числах, представленную minReaderVersion
и minWriterVersion
. Функциональность, реализованная с помощью функций таблиц, основана на этих версиях протокола, но многие устаревшие клиенты чтения и записи продолжают использовать версии протокола для управления совместимостью. Delta Lake стремится снизить версию протокола таблицы до минимально возможной, чтобы обеспечить максимальную совместимость с современными и устаревшими клиентами Delta. См. самый низкий возможный протокол.
В схеме управления версиями на основе целочисленных протоколов каждый номер версии объединяет несколько функций и функции в разных номерах версий являются накопительными. Это означает, что для соответствия протоколу Delta клиенты должны реализовать поддержку всех функций чтения или записи, присутствующих в данной версии, включая все ранее выпущенные функции.
Примечание.
Databricks включает неразрывную частичную поддержку функций таблицы во всех поддерживаемых версиях Databricks Runtime. Клиенты OSS Delta выбирают, как реализовать поддержку заданных функций.
Когда изменяется протокол таблицы?
Протокол для таблицы изменяется в следующих условиях:
- Если включена новая функция, протокол обновляется.
- Если функция таблицы удалена, протокол будет понижен.
Отключение функции таблицы не приводит к понижению уровня протокола. Необходимо отключить функцию, чтобы полностью удалить ее из табличного протокола. Не все функции таблицы можно удалить. См. Управление функцией удаления таблицы Delta Lake и понижение протокола таблицы.
Все операции изменения протокола конфликтуют со всеми параллельными операциями записи.
Потоковое чтение завершается сбоем при обнаружении коммита, который изменяет метаданные таблицы. Чтобы сохранить поток, необходимо перезапустить его. Для получения рекомендаций см. раздел "Соображения по рабочей среде для структурированной потоковой передачи".
Предупреждение
Большинство обновлений версий протокола необратимы, и обновление версии протокола может вывести из строя существующие механизмы чтения и записи таблиц Delta Lake. Databricks рекомендует обновлять определенные таблицы только при необходимости, например, чтобы включить новые функции в Delta Lake. Кроме того, необходимо проверить, что все текущие и будущие рабочие инструменты поддерживают таблицы Delta Lake с новой версией протокола.
Понижение протокола доступно для некоторых функций. См. Управление функцией удаления таблицы Delta Lake и понижение протокола таблицы.
Когда обновляется протокол таблицы?
При включении функции в таблице протокол таблицы автоматически обновляется. Некоторые функции включаются автоматически на основе синтаксиса, используемого в CREATE
или ALTER
инструкциях таблиц, тогда как для других функций требуется явное включение с помощью настройки свойств таблиц. Иногда необходимо явно включить несколько функций таблиц для поддержки требуемой функциональности. В других случаях включение функций может автоматически включать другие функции таблицы. Ознакомьтесь с документацией по Azure Databricks для используемых вами функций и синтаксиса, чтобы определить, какие характеристики таблицы требуются.
Функции чтения требуют обновления протокола чтения и протокола записи. Для функций записи требуется только обновление протокола записи.
Например, поддержка CHECK
ограничений — это функция записи: только пишущие приложения должны знать о CHECK
ограничениях и применять их.
В отличие от этого сопоставление столбцов требует обновления протоколов чтения и записи. Так как данные хранятся по-разному в таблице, приложения чтения должны понимать сопоставление столбцов, чтобы они могли правильно считывать данные.
Примечание.
Databricks рекомендует не изменять свойства таблицы minReaderVersion
и minWriterVersion
. Изменение этих свойств таблицы не предотвращает обновление протокола. Установка этих значений на более низкое значение не снижает уровень таблицы. См. Управление функцией удаления таблицы Delta Lake и понижение протокола таблицы.
Самый низкий возможный протокол
По умолчанию Delta Lake пытается использовать самый низкий протокол, чтобы представить все функции, помеченные как поддерживаемые таблицей.
Это поведение может привести только к снижению протокола таблицы, что означает, что minReaderVersion
или minWriterVersion
может измениться на более низкие значения для таблицы.
Чтобы удалить функцию таблицы из списка поддерживаемых функций в протоколе таблицы, необходимо выполнить команду DROP FEATURE
. Функции таблиц никогда не удаляются автоматически.
Если все функции Delta Lake, присутствующих в таблице, полностью поддерживаются в более низкой версии протокола, таблица может вернуться к версии протокола, которая не использует функции таблицы для указания совместимости чтения и записи. При понижении этого протокола таблица может удалить либо readerFeatures
, либо и readerFeatures
, и writerFeatures
из протокола таблицы. Это не приводит к отключению функций Delta Lake и происходит только в том случае, если функции таблицы не требуются в протоколе таблицы.
Все изменения, которые понижают уровень протокола таблицы, повышают совместимость с клиентами для чтения и записи. Это связано с тем, что клиенты чтения и записи должны соблюдать более низкие версии протокола, даже если они поддерживают более высокие версии протокола.
Влияет ли изменение функций таблиц на то, как включаются функции Delta Lake?
Если вы взаимодействуете только с таблицами Delta через Azure Databricks, вы можете продолжать отслеживать поддержку функций Delta Lake с помощью минимальных требований к среде выполнения Databricks. Azure Databricks поддерживает чтение таблиц Delta, которые были обновлены до версий с поддержкой функций таблиц, во всех выпусках Databricks Runtime LTS, если все функции, используемые таблицей, поддерживаются данным выпуском.
Если вы читаете и записываете из таблиц Delta с помощью других систем, вам может потребоваться рассмотреть вопрос о том, как функции таблиц влияют на совместимость, так как система не могла понять обновленные версии протокола.
Внимание
Особенности таблиц введены в формате Delta Lake для записывающей версии 7 и читательской версии 3. Azure Databricks перенес код во все поддерживаемые версии среды выполнения Databricks Runtime LTS, чтобы добавить поддержку функций таблиц, но только для тех функций, которые уже поддерживаются в этой среде выполнения Databricks. Это означает, что хотя вы можете использовать функции таблиц для активации созданных столбцов и продолжать работать с этими таблицами в Databricks Runtime 9.1 LTS, таблицы с включенными столбцами идентификаторов (для которых требуется Databricks Runtime 10.4 LTS) всё ещё не поддерживаются в этой версии среды выполнения.
Как Azure Databricks управляет совместимостью функций Delta Lake?
Databricks предоставляет поддержку новых функций и оптимизаций Delta Lake, которые создаются на основе существующего Delta Lake в релизах Databricks Runtime. Оптимизации Azure Databricks, использующие функции Delta Lake, учитывают протоколы, используемые в OSS Delta Lake для обеспечения совместимости. Многие оптимизации Azure Databricks требуют включения функций Delta Lake в таблице, а некоторые продукты Azure Databricks, такие как Декларативные конвейеры Lakeflow, зависят от многих функций таблицы.
- Все таблицы, написанные более низкими версиями Databricks Runtime, имеют полную поддержку чтения и записи в более высоких версиях Databricks Runtime.
- Таблицы, написанные более высокими версиями Databricks Runtime, могут использовать функции таблицы, которые не поддерживаются в более низких версиях Среды выполнения Databricks.
- Некоторые функции могут разрешать запись из более низких версий Databricks Runtime без полного применения всех оптимизаций, связанных с включенными функциями таблицы.
При работе с функциями таблицы, которые поддерживают поддержку более низких версий среды выполнения Databricks, некоторые операции, выполняемые в заданной версии среды выполнения Databricks, могут не выполняться в соответствующей версии OSS Delta. Если цикл разработки или архитектура данных включает OSS Delta Lake, то перед включением функций таблиц в рабочих таблицах всегда следует проверять совместимость в клиентах OSS Delta.
Функции Delta Lake и необходимые версии среды выполнения Databricks
Функции включаются индивидуально для каждой таблицы. В следующей таблице перечислены самые низкие версии Среды выполнения Databricks с полной поддержкой указанной функции. Полная поддержка означает, что поддерживаются все общие доступные функции для операций чтения и записи.
Функция | Требуется версия среды выполнения Databricks или более поздняя | Документация |
---|---|---|
CHECK ограничения |
Все поддерживаемые версии среды выполнения Databricks |
Задайте ограничение CHECK в Azure Databricks |
Изменение потока данных | Все поддерживаемые версии среды выполнения Databricks | Используйте канал изменений данных Delta Lake в Azure Databricks |
Созданные столбцы | Все поддерживаемые версии среды выполнения Databricks | Сгенерированные столбцы Delta Lake |
Сопоставление столбцов | Все поддерживаемые версии среды выполнения Databricks | Переименовывать и удалять столбцы с помощью сопоставления столбцов в Delta Lake |
Столбцы идентификаторов | Все поддерживаемые версии среды выполнения Databricks | Использование идентификационных столбцов в Delta Lake |
Функции таблиц | Databricks Runtime 12.2 LTS | Функции таблиц для совместимости протокола |
Векторы удаления | Databricks Runtime 12.2 LTS | Что такое векторы удаления? |
Метка времени NTZ | Databricks Runtime 13.3 LTS | типа TIMESTAMP_NTZ |
ЮниФорм | Databricks Runtime 13.3 LTS | Чтение таблиц Delta с помощью клиентов Iceberg |
Кластеризация жидкости | Databricks Runtime 13.3 LTS | Использование жидкостной кластеризации для таблиц |
Отслеживание строк | Databricks Runtime 14.3 LTS | Используйте отслеживание строк для таблиц Delta |
Расширение типов | Databricks Runtime версия 15.4 LTS | Расширение типов |
Вариант | Databricks Runtime версия 15.4 LTS | Поддержка вариаций в Delta Lake |
Сопоставления | Databricks Runtime 16.1 | Поддержка коллирования Delta Lake |
Защищенные контрольные точки | Databricks Runtime 16.3 | Удалите функцию таблицы Delta Lake и понизьте версию протокола таблицы |
См. заметки о выпуске Databricks Runtime и версии совместимости.
Примечание.
Декларативные конвейеры Lakeflow и Databricks SQL автоматически обновляют среды выполнения с регулярными выпусками для поддержки новых функций. См. заметки о выпуске и процессе обновления Декларативных конвейеров Lakeflow и заметки о выпуске Databricks SQL.
Функции по версии протокола
Протокол OSS Delta Lake стандартизирован на функциях таблицы, но некоторые клиенты для чтения и записи еще не реализовали поддержку функций таблиц и продолжают использовать устаревшие протоколы minWriterVersion
и minReaderVersion
.
Некоторые клиенты могут не поддерживать все функции Delta Lake, включая функции, использующие устаревшую версию протокола. Обратитесь к документации по клиенту Delta Lake, чтобы подтвердить поддержку функций. Всегда тестируйте совместимость перед включением новых функций в рабочих таблицах.
В следующей таблице показаны минимальные версии протокола чтения и записи, необходимые для функций Delta Lake, а также указывает, требуется ли учитывать функцию таблицы только для операций записи или операций чтения и записи.
Примечание.
Если вы беспокоитесь только о совместимости среды выполнения Databricks, см. статью о том, как Azure Databricks управляет совместимостью функций Delta Lake?.
Функция | minWriterVersion |
minReaderVersion |
Функция таблицы |
---|---|---|---|
Основные функциональные возможности | 2 | 1 | Писатель |
CHECK ограничения |
3 | 1 | Писатель |
Изменение потока данных | 4 | 1 | Писатель |
Созданные столбцы | 4 | 1 | Писатель |
Сопоставление столбцов | 5 | 2 | Читатель и писатель |
Идентификационные столбцы | 6 | 1 | Писатель |
Отслеживание строк | 7 | 1 | Писатель |
Векторы удаления | 7 | 3 | Читатель и писатель |
Метка времени | 7 | 3 | Читатель и писатель |
Жидкостная кластеризация | 7 | 3 | Читатель и Писатель |
Iceberg readers (UniForm) | 7 | 2 | Писатель (1) |
Расширение типов | 7 | 3 | Читатель и писатель |
Вариант | 7 | 3 | Читатель и писатель |
Параметры сортировки | 7 | 3 | Читатель и средство записи |
Защищенные контрольные точки | 7 | 1 | Писатель |
(1). Требуется включить сопоставление столбцов.