Что такое векторы удаления?

Векторы удаления — это функция оптимизации хранилища, которая можно включить в таблицах Delta Lake. По умолчанию при удалении одной строки в файле данных необходимо перезаписать весь файл Parquet, содержащий запись. Если векторы удаления включены для таблицы, DELETEи UPDATEопераций, используйте MERGE векторы удаления, чтобы пометить существующие строки как удаленные или измененные без перезаписи файла Parquet. Последующие операции чтения в таблице разрешают текущее состояние таблицы, применяя удаления, указанные векторами удаления, к последней версии таблицы.

Databricks рекомендует использовать Databricks Runtime 14.3 LTS и более поздних версий для записи таблиц с векторами удаления для использования всех оптимизаций. Таблицы можно считывать с векторами удаления, включенными в Databricks Runtime 12.2 LTS и выше.

В Databricks Runtime 14.2 и более поздних версиях таблицы с векторами удаления поддерживают параллелизм на уровне строк. См. статью "Конфликты записи с параллелизмом на уровне строк".

Примечание.

Фотон использует векторы удаления для прогнозных обновлений ввода-вывода, ускорения DELETEи MERGEUPDATE операций. Все клиенты, поддерживающие чтение векторов удаления, могут считывать обновления, создающие векторы удаления, независимо от того, были ли созданы эти обновления прогнозным вводом-выводом. См. статью "Использование прогнозного ввода-вывода" для ускорения обновлений.

Включение векторов удаления

Внимание

Параметр администратора рабочей области определяет, включены ли векторы удаления для новых таблиц Delta. См. векторы автоматического включения удаления.

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

Чтобы вручную включить поддержку векторов удаления в таблице или представлении delta.enableDeletionVectors , используйте свойство таблицы. Вы можете вручную включить векторы удаления в разностной таблице при создании или изменении таблицы. Вы можете вручную включить векторы удаления в материализованном представлении или таблице потоковой передачи только при создании материализованного представления или потоковой таблицы. Инструкцию ALTER нельзя использовать для включения векторов удаления в материализованном представлении или таблице потоковой передачи.

CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

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

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

В Databricks Runtime 14.1 и более поздних версиях можно удалить функцию таблицы векторов удаления, чтобы обеспечить совместимость с другими клиентами Delta. См. сведения о функциях таблицы Drop Delta.

Применение изменений к файлам данных Parquet

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

  • Команда OPTIMIZE выполняется в таблице.
  • Автоматическое сжатие активирует перезапись файла данных с вектором удаления.
  • REORG TABLE ... APPLY (PURGE) выполняется в таблице.

События, связанные с сжатием файлов, не имеют строгих гарантий для разрешения изменений, записанных в векторах удаления, и некоторые изменения, записанные в векторах удаления, могут не применяться, если целевые файлы данных не будут кандидатами на сжатие файлов. REORG TABLE ... APPLY (PURGE) перезаписывает все файлы данных, содержащие записи с изменениями, записанными с помощью векторов удаления. См. таблицу REORG.

Примечание.

Измененные данные могут по-прежнему существовать в старых файлах. Для физического удаления старых файлов можно выполнить инструкцию VACUUM. REORG TABLE ... APPLY (PURGE) создает новую версию таблицы при завершении. Это метка времени завершения, необходимо учитывать порог хранения для операции, чтобы VACUUM полностью удалить удаленные файлы. См. раздел "Удаление неиспользуемых файлов данных с помощью вакуума".

Совместимость с клиентами Delta

Azure Databricks использует векторы удаления для прогнозирования операций ввода-вывода для обновлений вычислений с поддержкой Photon. См. статью "Использование прогнозного ввода-вывода" для ускорения обновлений.

Поддержка использования векторов удаления для операций чтения и записи зависит от клиента.

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

Клиент Запись векторов удаления Чтение векторов удаления
Databricks Runtime с photon Поддерживает MERGEи UPDATEDELETE использует Databricks Runtime 12.2 LTS и более поздних версий. Требуется Databricks Runtime 12.2 LTS или более поздней версии.
Среда выполнения Databricks без фотона Поддерживает DELETE использование Databricks Runtime 12.2 LTS и более поздних версий. Поддерживает UPDATE использование Databricks Runtime 14.1 и более поздних версий. Поддерживает MERGE использование Databricks Runtime 14.3 LTS и более поздних версий. Требуется Databricks Runtime 12.2 LTS или более поздней версии.
OSS Apache Spark с OSS Delta Lake Поддерживает DELETE использование OSS Delta 2.4.0 и более поздних версий. Поддерживает UPDATE использование OSS Delta 3.0.0 и более поздних версий. Требуется OSS Delta 2.3.0 или более поздней версии.
Получатели разностного общего доступа Записи не поддерживаются в таблицах Delta Sharing Databricks: требуется DBR 14.1 или более поздней версии. Apache Spark с открытым кодом: требуется delta-sharing-spark 3.1 или более поздней версии.

Примечание.

Сведения о поддержке других клиентов Delta см. в документации по интеграции OSS Delta Lake.

Ограничения

  • UniForm не поддерживает векторы удаления.
  • Инструкцию GENERATE нельзя использовать для создания файла манифеста для таблицы с файлами, использующими векторы удаления. Чтобы создать манифест, сначала запустите таблицу REORG ... Инструкцию APPLY (PURGE) и выполните инструкцию GENERATE . При отправке инструкции необходимо убедиться, что при отправке инструкции REORG не выполняются параллельные операции записи.
  • Нельзя добавочно создавать файлы манифеста для таблицы с включенными векторами удаления (например, задав свойство delta.compatibility.symlinkFormatManifest.enabled=trueтаблицы).
  • Если включить векторы удаления в материализованном представлении или таблице потоковой передачи и впоследствии отключить векторы удаления, будущие записи в представление или таблицу не будут использоваться векторами удаления, но существующие векторы удаления не удаляются.
  • Невозможно уменьшить уровень протокола таблицы после включения векторов удаления в материализованном представлении или таблице потоковой передачи. После включения функция таблицы для векторов удаления не может быть удалена, даже если впоследствии вы отключаете векторы удаления в представлении или таблице.
  • Нельзя запускать REORG в материализованных представлениях или таблицах потоковой передачи, чтобы зафиксировать изменения, записанные в векторах удаления, в файлы данных Parquet, резервные копии этих объектов. Из-за этого ограничения не включите векторы удаления для материализованных представлений или таблиц потоковой передачи, если необходимо гарантировать полное удаление записей (например, для соответствия GDPR или CCPA).