Как 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
в 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 | Использование UniForm для чтения таблиц 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 и версии совместимости.
Примечание.
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
.