Как 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.

Примечание.

Вы можете удалить и v2Checkpoint в deletionVectors 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.1 (неподдерживаемый) Что такое функции таблицы?
Векторы удаления Databricks Runtime 12.1 (неподдерживаемый) Что такое векторы удаления?
Метка времени Databricks Runtime 13.0 (неподдерживаемый) тип TIMESTAMP_NTZ
Униформа Databricks Runtime 13.2 (неподдерживаемый) Универсальный формат (UniForm) для совместимости айсберга с разностными таблицами
Жидкость кластеризация Databricks Runtime 13.3 LTS Использование жидких кластеризация для таблиц Delta

См . заметки о выпуске 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.

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

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

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

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

Примечание.

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

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

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

Примечание.

Если вы беспокоитесь только о совместимости среды выполнения Databricks, ознакомьтесь со сведениями о том, какие функции Delta Lake требуют обновления Среды выполнения Databricks?. Разностный общий доступ поддерживает только чтение таблиц с функциями, которые требуются 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 3 Что такое векторы удаления?
Метка времени 7 3 тип TIMESTAMP_NTZ
Жидкость кластеризация 7 3 Использование жидких кластеризация для таблиц Delta
Униформа 7 2 Универсальный формат (UniForm) для совместимости айсберга с разностными таблицами