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


Как Azure Databricks управляет совместимостью функций Delta Lake?

Delta Lake — это независимый проект с открытым исходным кодом в рамках управления Linux Foundation. Databricks предоставляет поддержку новых функций и оптимизаций Delta Lake, которые создаются на основе Delta Lake в выпусках Databricks Runtime.

Оптимизации Azure Databricks, использующие функции Delta Lake, учитывают протоколы, используемые в OSS Delta Lake для обеспечения совместимости.

Многие оптимизации Azure Databricks требуют включения функций Delta Lake в таблице. Функции Delta Lake всегда совместимы обратно, поэтому таблицы, написанные более низкой версией Databricks Runtime, всегда могут быть прочитаны и записаны более высокой версией Databricks Runtime. Включение некоторых функций нарушает совместимость с рабочими нагрузками, выполняемыми в более старой версии Databricks Runtime. Для функций, которые нарушают обратную совместимость, необходимо обновить все нагрузки, ссылающиеся на обновленные таблицы, чтобы использовать соответствующую версию Databricks Runtime.

Примечание.

Вы можете удалить deletionVectors, v2Checkpoint, columnMapping, typeWidening-previewи collations-preview в Azure Databricks. См. функции таблицы типа Drop Delta.

Внимание

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

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

Какие функции Delta Lake требуют обновления Среды выполнения Databricks?

Следующие функции Delta Lake прерывают совместимость вперед. Функции включаются индивидуально для каждой таблицы. В этой таблице перечислены самые низкие версии среды выполнения Databricks, поддерживаемые Azure Databricks.

Функция Требуется версия среды выполнения Databricks или более поздняя Документация
CHECK constraints Databricks Runtime 9.1 LTS Установка ограничения CHECK в Azure Databricks
Изменение веб-канала данных Databricks Runtime 9.1 LTS Использование веб-канала изменений данных Delta Lake в Azure Databricks
Созданные столбцы Databricks Runtime 9.1 LTS Delta Lake создали столбцы
Сопоставление столбцов Databricks Runtime 10.4 LTS Переименовать и удалить столбцы с помощью сопоставления столбцов Delta Lake
Столбцы идентификаторов Databricks Runtime 10.4 LTS Использование столбцов идентификаторов в Delta Lake
Функции таблиц Databricks Runtime 12.2 LTS Что такое функции таблиц?
Векторы удаления Databricks Runtime 12.2 LTS Что такое векторы удаления?
Метка времени Databricks Runtime 13.3 LTS тип TIMESTAMP_NTZ
Униформа Databricks Runtime 13.3 LTS Чтение таблиц Delta с помощью клиентов Iceberg
Кластеризация Liquid Databricks Runtime 13.3 LTS Использование кластеризации жидкости для таблиц Delta
Отслеживание строк Databricks Runtime 14.1 Используйте отслеживание строк для таблиц Delta
Расширение типов Databricks Runtime 15.2 Расширение типов
Вариант Databricks Runtime 15.3 Поддержка вариантов в Delta Lake
Сопоставления Databricks Runtime 16.1 поддержка сортировки Delta Lake

См . заметки о выпуске Databricks Runtime и версии совместимости.

Примечание.

Delta Live Tables и Databricks SQL автоматически обновляют среды выполнения с регулярными выпусками для поддержки новых функций. См. заметки о выпуске Delta Live Tables и процесс обновления выпуска и заметки о выпуске Databricks SQL.

Что такое спецификация протокола таблицы?

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

Спецификация протокола разделена на два компонента: протокол чтения и протокол записи.

Предупреждение

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

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

Протокол чтения

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

Внимание

Все приложения, записывающие в таблицу Delta, должны уметь создавать моментальный снимок таблицы. Таким образом, рабочие нагрузки, записываемые в таблицы Delta, должны соблюдать требования к протоколу чтения и записи.

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

Протокол записи

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

Какие протоколы необходимо обновить?

Для некоторых функций требуется обновление протокола чтения и протокола записи. Для других функций требуется только обновление протокола записи.

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

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

Минимальные версии чтения и записи

Примечание.

При включении сопоставления столбцов необходимо явно обновить версию протокола таблицы.

При включении функций Delta в таблице протокол таблицы автоматически обновляется. Databricks рекомендует не изменять свойства таблицы minReaderVersion и minWriterVersion. Изменение этих свойств таблицы не предотвращает обновление протокола. Установка этих значений на более низкое значение не снижает уровень таблицы. См. функции таблицы типа Drop Delta.

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

В Databricks Runtime 12.2 LTS и более поздних версиях функции таблицы Delta Lake содержат детализированные флаги, указывающие, какие функции поддерживаются данной таблицей. В Databricks Runtime 11.3 LTS и ниже функции Delta Lake были включены в пакетах, называемых версиями протокола. Функции таблиц являются преемником версий протокола и предназначены для повышения гибкости для клиентов, которые считывают и записывают Delta Lake. См. раздел "Что такое версия протокола?".

Примечание.

Функции таблиц имеют требования к версии протокола. См . сведения о функциях по версии протокола.

Функция разностной таблицы — это маркер, указывающий, что таблица поддерживает определенную функцию. Каждая функция — это функция протокола записи (это означает, что она обновляет протокол записи) или функцию протокола чтения и записи (то есть протоколы чтения и записи обновляются, чтобы включить эту функцию).

Дополнительные сведения о поддерживаемых функциях таблиц в Delta Lake см. в протоколе 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) всё ещё не поддерживаются в этой версии среды выполнения.

Что такое версия протокола?

Версия протокола — это номер протокола, указывающий определенную группу функций таблицы. В Databricks Runtime 11.3 LTS и ниже нельзя включить функции таблиц по отдельности. Версии протокола объединяют группу функций.

Таблицы Delta указывают отдельные версии протокола для чтения и записи. Журнал транзакций для таблицы Delta содержит сведения о версии протокола, поддерживающие эволюцию Delta Lake. Посмотрите подробности таблицы Delta Lake и выполните её детальное описание .

Версии протокола объединяют все функции из предыдущих протоколов. См . сведения о функциях по версии протокола.

Примечание.

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

Функции по версии протокола

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

Примечание.

Если вы беспокоитесь только о совместимости среды выполнения Databricks, ознакомьтесь со сведениями о том, какие функции Delta Lake требуют обновления Среды выполнения Databricks?. Delta Sharing поддерживает только чтение таблиц с функциями, требующими minReaderVersion = 1.

Функция minWriterVersion minReaderVersion Документация
Основные функции 2 1 Что такое Delta Lake?
CHECK constraints 3 1 Установка ограничения CHECK в Azure Databricks
Изменение веб-канала данных 4 1 Использование веб-канала изменений данных Delta Lake в Azure Databricks
Созданные столбцы 4 1 Delta Lake создали столбцы
Сопоставление столбцов 5 2 Переименовать и удалить столбцы с помощью сопоставления столбцов Delta Lake
Столбцы идентификаторов 6 2 Использование столбцов идентификаторов в Delta Lake
Описание функций таблицы 7 1 Что такое функции таблиц?
Функции записи таблицы 7 3 Что такое функции таблиц?
Отслеживание строк 7 1 Используйте отслеживание строк для таблиц Delta
Векторы удаления 7 3 Что такое векторы удаления?
Метка времени 7 3 тип TIMESTAMP_NTZ
Кластеризация Liquid 7 3 Использование кластеризации жидкости для таблиц Delta
Униформа 7 2 Чтение таблиц Delta с помощью клиентов Iceberg
Расширение типов 7 3 Расширение типов
Вариант 7 3 Поддержка вариантов в Delta Lake
Сопоставления 7 3 поддержка сортировки Delta Lake