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


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

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

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

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

Примечание.

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

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

Внимание

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

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

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

Примечание.

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

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

Клиент Написание векторов удаления Чтение векторов удаления
Databricks Runtime с Photon Поддерживает MERGE, UPDATE, и DELETE, начиная с 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 Запись данных не поддерживается в таблицах Delta Sharing Databricks: требуется DBR версии 14.1 или выше. Apache Spark с открытым кодом: требуется delta-sharing-spark 3.1 или более поздней версии.

Примечание.

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

Ограничения

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