Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Протоколы таблиц Delta Lake указывают, какие функции должен поддерживать клиент для чтения или записи таблицы. На этой странице рассматриваются версии протокола, функции таблиц, требования к совместимости и управление обновлениями протокола Azure Databricks. См. также сведения о таблице с подробными сведениями о описании.
Протокол таблицы и совместимость
Каждая таблица Delta Lake содержит спецификацию протокола, которая указывает набор возможностей, необходимых для чтения и записи в таблицу. Приложения используют спецификацию протокола, чтобы определить, могут ли они поддерживать все используемые в таблице функции. Если приложение не может поддерживать функцию в текущем протоколе таблицы, то это приложение не может читать или записывать эту таблицу.
Большинство новых возможностей Delta Lake требуют обновления протокола таблицы.
В следующей таблице перечислены ключевые термины, описывающие протоколы Delta Lake:
| Срок | Description |
|---|---|
| Клиент Delta Lake | Любая система, которая считывает или записывает данные в таблицу Delta Lake. |
| Читать протокол | Указывает поддержку, необходимую для клиента Delta Lake для чтения таблицы. |
| Протокол записи | Указывает поддержку, необходимую для клиента Delta Lake для записи в таблицу. |
minReaderVersion |
Целочисленное значение протокола чтения. Допустимые значения: 1, 2 или 3. |
minWriterVersion |
Целочисленное значение протокола записи. Допустимые значения являются целыми числами2.7 |
| Функция таблицы | Более точной альтернативе версиям протокола, используемым при minReaderVersion = 3 и minWriterVersion = 7. Функции таблиц сопоставляются с функциями Delta Lake, которые могут быть включены при необходимости. |
| Функция писателя | Функция таблицы, требующая поддержки клиента записи, но не блокирует доступ только для чтения. |
| Функция чтения | Функция таблицы, требующая поддержки клиентов чтения и записи. См. сведения о версиях протокола и функциях таблиц. |
Протоколы записи и функции записи влияют только на совместимость с клиентами записи, позволяя доступ только для чтения к таблице из устаревших рабочих нагрузок.
Не все функции Delta Lake совместимы друг с другом.
Некоторые функции таблицы не могут быть удалены после включения. См. Управление функцией удаления таблицы Delta Lake и понижение протокола таблицы.
Версии протокола и функции таблиц
Все таблицы Delta Lake включают целочисленную версию протокола, minReaderVersion представленную и minWriterVersion. Каждая версия объединяет несколько функций, а функции являются накопительными в разных версиях. Чтобы соответствовать протоколу Delta Lake, клиенты должны реализовать поддержку всех функций в данной версии, включая все ранее выпущенные функции.
В Databricks Runtime 12.2 LTS и более поздних версиях функции таблицы заменяют целочисленный протокол на гранулярные флаги, указывающие, какие функции использует таблица. Это позволяет более точно проверять совместимость между клиентами и таблицами.
Функции записи таблиц влияют на способ записи данных. Они требуют, но не блокируют minWriterVersion=7 клиентов чтения.
Функции чтения таблиц влияют на способ чтения данных. Все функции чтения также являются функциями записи и требуютсяminReaderVersion=3.minWriterVersion=7 Клиент не может записывать данные в таблицу, которую она не может прочитать.
Если функции таблицы включены, они отображаются в протоколе как readerFeatures или writerFeatures. Delta Lake разрешает протокол таблицы до самой низкой версии, поддерживающей все включенные функции. См. самый низкий возможный протокол.
Примечание.
Azure Databricks включает неразрывную поддержку функций таблицы во всех поддерживаемых версиях среды выполнения Databricks. Клиенты OSS Delta Lake выбирают, как реализовать поддержку заданных функций.
Изменения протокола
Протокол для таблицы изменяется в следующих условиях:
- Если включена новая функция, протокол обновляется.
- Если функция таблицы удалена, протокол будет понижен.
Отключение функции таблицы не приводит к понижению уровня протокола. Необходимо удалить функцию, чтобы полностью удалить ее из протокола. Не все функции таблицы можно удалить. См. Управление функцией удаления таблицы Delta Lake и понижение протокола таблицы.
Все операции изменения протокола конфликтуют с одновременными операциями записи. Потоковое чтение завершается сбоем при обнаружении коммита, который изменяет метаданные таблицы. Чтобы продолжить, перезапустите затронутые потоки. Рекомендуемые методы см. в разделе "Производственные соображения для структурированной потоковой передачи".
Примечание.
Databricks рекомендует никогда не изменять minReaderVersion свойства таблицы напрямую minWriterVersion . Изменение этих свойств не препятствует обновлению протокола, а установка их на более низкое значение не снижает уровень таблицы. См. Управление функцией удаления таблицы Delta Lake и понижение протокола таблицы.
Что активирует обновление протокола
При включении функции протокол таблицы автоматически обновляется.
Обновления протокола активируются следующим образом:
- Включите автоматически на основе синтаксиса, используемого в
CREATEинструкциях илиALTERинструкциях. Например,CLUSTER BYвCREATE TABLEинструкции автоматически включает кластеризацию жидкости иGENERATED ALWAYS ASвключает созданные столбцы. - Явное включение с помощью свойств таблицы. Например, параметр
'delta.enableDeletionVectors' = trueвключает векторы удаления. - Включение функции может автоматически включать необходимые функции. Например, включение UniForm автоматически включает сопоставление столбцов и включает кластеризацию жидкости автоматически включает контрольную точку версии 2. Просмотрите соответствующую Azure Databricks документацию, чтобы определить, какие функции таблицы требуются для данной функции.
Функции чтения обновляют протоколы чтения и записи. Например, сопоставление столбцов является функцией чтения и требует обновления обоих протоколов, так как данные хранятся по-разному в хранилище.
Функции записи, такие как CHECK ограничения, обновляются только протокол записи.
Предупреждение
Большинство обновлений версий протокола необратимы и могут нарушить существующие средства чтения таблиц Delta Lake, записи или оба. Обновите определенные таблицы только при необходимости и убедитесь, что все текущие и будущие рабочие инструменты поддерживают новую версию протокола.
Понижение протокола доступно для некоторых функций. См. Управление функцией удаления таблицы Delta Lake и понижение протокола таблицы.
Самый низкий возможный протокол
Delta Lake разрешает протокол таблицы до самой низкой версии, поддерживающей все включенные функции. Это может быть только ниже minReaderVersion или minWriterVersionникогда не поднять их. Функции таблиц никогда не удаляются автоматически. Используется DROP FEATURE для удаления функции таблицы из протокола.
Если все включенные функции полностью поддерживаются в более низкой целочисленной версии протокола, таблица может вернуться к этой версии и удалить readerFeatures или writerFeatures из протокола. Это не отключает никакие функции. Более низкие версии протокола повышают совместимость, так как все клиенты должны уважать их.
совместимость Azure Databricks и Databricks Runtime
Azure Databricks предоставляет поддержку новых функций Delta Lake в выпусках Databricks Runtime:
- Таблицы, написанные более низкой версией Databricks Runtime, имеют полную поддержку чтения и записи в более высоких версиях Databricks Runtime.
- Таблицы, написанные более высокой версией Databricks Runtime, могут использовать функции таблиц, которые не поддерживаются в более низких версиях Databricks Runtime.
- Некоторые функции позволяют записывать из более низких версий Databricks Runtime без полного применения всех оптимизаций для включенной функции.
Если вы используете только таблицы Delta Lake через Azure Databricks, необходимо отслеживать поддержку функций, используя минимальные требования к среде выполнения Databricks. При чтении или записи таблиц из внешних систем необходимо убедиться, что эти клиенты поддерживают функции таблицы, включенные в таблицах.
Поддержка функций резервной таблицы
В Databricks Runtime 12.2 LTS и более поздних версиях функции таблицы заменили протокол на основе целых чисел детализированные флаги, указывающие, какие функции использует таблица.
Azure Databricks поддерживает функцию резервной таблицы для Databricks Runtime 11.3 LTS и ниже, а не только поддержку целых версий протокола, но только для функций, уже поддерживаемых в этом выпуске.
Например, вы можете читать из таблицы и записывать их в таблицу с созданными столбцами, включенными с помощью функций таблицы в Databricks Runtime 9.1 LTS. Однако вы не можете использовать Databricks Runtime 9.1 LTS для чтения и записи в таблицу с столбцами удостоверений, включенных с помощью функций таблицы, так как для столбцов удостоверений требуется Databricks Runtime 10.4 LTS и более поздних версий.
При использовании функций таблицы с поддержкой резервной копии некоторые операции, доступные в заданной версии Databricks Runtime, могут быть недоступны в соответствующей версии OSS Delta Lake. Если архитектура включает клиенты OSS Delta Lake, проверьте совместимость перед включением функций таблиц в рабочих таблицах.
Функции Delta Lake и необходимые версии среды выполнения Databricks
В следующей таблице перечислены самые низкие версии среды выполнения Databricks с полной поддержкой каждой функции, поэтому поддерживаются все общие возможности для операций чтения и записи.
| Функция | Требуется версия среды выполнения Databricks или более поздняя | Documentation |
|---|---|---|
CHECK ограничения |
Все поддерживаемые версии среды выполнения Databricks |
CHECK Зависимости |
| Изменение потока данных | Все поддерживаемые версии среды выполнения Databricks | Использование веб-канала изменений в Azure Databricks |
| Созданные столбцы | Все поддерживаемые версии среды выполнения Databricks | Сгенерированные столбцы Delta Lake |
| Сопоставление столбцов | Все поддерживаемые версии среды выполнения Databricks | Переименовывать и удалять столбцы с помощью сопоставления столбцов в Delta Lake |
| Столбцы идентификаторов | Все поддерживаемые версии среды выполнения Databricks | Идентификационные столбцы |
| Функции таблиц | Все поддерживаемые версии среды выполнения Databricks | Версии протокола и функции таблиц |
| Векторы удаления | Все поддерживаемые версии среды выполнения Databricks | Векторы удаления в Databricks |
| TimestampNTZ | Databricks Runtime 13.3 LTS | типа TIMESTAMP_NTZ |
| ЮниФорм | Databricks Runtime 13.3 LTS | Чтение таблиц Delta Lake с клиентами Iceberg с помощью UniForm |
| Кластеризация жидкости | Databricks Runtime 13.3 LTS | Использование жидкостной кластеризации для таблиц |
| Отслеживание строк данных | Databricks Runtime 14.3 LTS | Отслеживание строк в Azure Databricks |
| Расширение типов | Databricks Runtime версия 15.4 LTS | Расширение типов |
| Variant | Databricks Runtime версия 15.4 LTS | Поддержка типа variant для Apache Iceberg и Delta Lake |
| Collations | Databricks Runtime 16.1 | Поддержка коллирования Delta Lake |
| Защищенные контрольные точки | Databricks Runtime 16.3 | Удалите функцию таблицы Delta Lake и понизьте версию протокола таблицы |
| Коммиты реестра | Databricks Runtime 16.4 LTS | Каталог коммитов |
См. заметки о выпуске и совместимости версий Databricks Runtime.
Примечание.
Конвейеры Lakeflow и Databricks SQL автоматически обновляют среды выполнения с регулярными выпусками для поддержки новых функций. См. заметки о выпуске конвейеров Lakeflow и процесс обновления выпускаи заметки о выпуске Databricks SQL.
Функции по версии протокола
Примечание.
Сведения о совместимости среды выполнения Databricks см. в Azure Databricks и совместимости Databricks Runtime.
Delta Lake использует отдельные minReaderVersion значения и minWriterVersion значения для указания возможностей протокола. Протокол Delta Lake с открытым исходным кодом стандартизован для функций таблицы, но некоторые клиенты по-прежнему используют устаревшую версию протокола. Так как некоторые клиенты могут не поддерживать все функции, Databricks рекомендует проверить наличие документации клиента и проверить совместимость перед включением новых функций в рабочих таблицах.
Apache Iceberg использует одну версию format-version вместо отдельных версий для чтения и записи. Версия формата Айсберга указывает, какие функции доступны, но не требует их использования. Функции требуют согласия, за исключением обязательного отслеживания строк в версии формата 3. Когда функция показывает N/A в столбце Айсберга, это функция delta-specific без прямого эквивалента Айсберга.
В следующей таблице перечислены требования к версии протокола для функций таблицы Delta Lake и Apache Iceberg. Тип функции указывает, должна ли функция соблюдаться только для операций записи или для операций чтения и записи.
| Функция | Дельта minWriterVersion |
Дельта minReaderVersion |
Айсберг format-version |
Тип компонента |
|---|---|---|---|---|
| Основные функциональные возможности | 2 | 1 | 1 | Писатель |
CHECK ограничения |
3 | 1 | N/A | Писатель |
| Изменение потока данных | 4 | 1 | N/A | Писатель |
| Созданные столбцы | 4 | 1 | N/A | Писатель |
| Сопоставление столбцов | 5 | 2 | N/A | Читатель и писатель |
| Идентификационные столбцы | 6 | 1 | N/A | Писатель |
| Отслеживание строк | 7 | 1 | 3 | Писатель |
| Векторы удаления | 7 | 3 | 3 | Читатель и писатель |
| Метка времени | 7 | 3 | 1 | Читатель и писатель |
| Жидкостная кластеризация | 7 | 3 | 1 | Читатель и средство записи (1) |
| Читатели Айсберга (UniForm) | 7 | 2 | N/A | Запись (2) |
| Расширение типов | 7 | 3 | N/A | Читатель и писатель |
| Variant | 7 | 3 | 3 | Читатель и писатель |
| Измельчение вариантов | 7 | 3 | 3 | Читатель и писатель |
| Параметры сортировки | 7 | 3 | N/A | Читатель и писатель |
| Защищенные контрольные точки | 7 | 1 | N/A | Писатель |
| Каталог коммитов | 7 | 3 | N/A | Читатель и писатель |
(1): кластеризация Liquid реализует скрытую секционирование.