Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Векторы удаления ускоряют операции DELETE, UPDATE и MERGE в таблицах Delta Lake и Apache Iceberg. Без векторов удаления изменение одной строки требует перезаписи всего файла Parquet, содержащего такую запись. Вместо этого векторы удаления помечают строки, измененные в метаданных, и операции чтения применяют записи вектора удаления во время запроса для разрешения текущего состояния таблицы.
Примечание.
Для прогнозных обновлений ввода-вывода Фотон использует векторы удаления для ускорения операций DELETE, MERGE и UPDATE. См. статью "Использование прогнозного ввода-вывода" для ускорения обновлений.
Prerequisites
Все таблицы Apache Iceberg версии 3 включают векторы удаления по умолчанию. Ознакомьтесь с функциями Apache Iceberg версии 3. Для таблиц Delta Lake необходимо явно включить векторы удаления.
Чтобы записывать таблицы с векторами удаления с помощью всех оптимизаций, используйте Databricks Runtime 14.3 LTS и более поздних версий. Чтобы прочитать их, используйте Databricks Runtime 12.2 LTS и более поздних версий.
В Databricks Runtime 14.2 и более поздних версиях таблицы с векторами удаления поддерживают параллелизм на уровне строк. См. параллелизм на уровне строк.
Совместимость клиента
Azure Databricks использует векторы удаления для предсказательного ввода-вывода при обновлениях вычислительных процессов с поддержкой Photon. См. статью "Использование прогнозного ввода-вывода" для ускорения обновлений.
Поддержка использования векторов удаления для операций чтения и записи зависит от клиента.
В следующей таблице перечислены версии клиентов, необходимые для чтения и записи векторных таблиц удаления:
| Client | Написание векторов удаления | Чтение векторов удаления |
|---|---|---|
| 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 или более поздней версии. |
| Получатели OpenSharing | Записи не поддерживаются в таблицах OpenSharing. | Для Azure Databricks требуется Databricks Runtime версии 14.1 или более поздней. Для Apache Spark с открытым кодом требуется delta-sharing-spark 3.1 или более поздней версии. |
Сведения о поддержке с другими клиентами см. в документации по интеграции OSS Delta Lake.
Включение векторов удаления
В параметрах рабочей области можно включить векторы удаления в новых таблицах при использовании хранилища SQL или Databricks Runtime 14.3 LTS или более поздней версии. Параметры по умолчанию зависят от региона, см. раздел " Автоматическое включение векторов удаления".
Векторы удаления по умолчанию не включены для материализованных представлений и таблиц потоковой передачи, хранящихся в хранилище метаданных Hive.
Чтобы вручную включить или удалить векторы удаления в любой таблице или представлении enableDeletionVectors , используйте свойство таблицы.
Чтобы включить векторы удаления в таблице при создании или изменении таблицы:
Озеро Дельта
CREATE TABLE <table-name> [options] TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
Таблица Айсберга
CREATE TABLE <table-name> [options] TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
Инструкцию ALTER нельзя использовать для включения или удаления векторов удаления в материализованном представлении или потоковой таблице. Необходимо использовать оператор CREATE TABLE.
Предупреждение
При включении векторов удаления Databricks обновляет протокол таблицы. После обновления клиенты без поддержки векторов удаления не могут читать таблицу. См. сведения о совместимости функций Delta Lake и протоколах.
В Databricks Runtime 14.1 и более поздних версиях можно удалить функцию таблицы векторов удаления, чтобы обеспечить совместимость с другими клиентами. См. Управление функцией удаления таблицы Delta Lake и понижение протокола таблицы.
Применить мягкое удаление к файлам данных
Векторы удаления помечают изменения в строках как мягкие удаления, которые логически изменяют существующие файлы данных Parquet в таблице. Чтобы физически переписать файлы данных Parquet, выполните одно из следующих действий:
- Запустите
OPTIMIZEв таблице. - Запустите
REORG TABLE ... APPLY (PURGE)в таблице. Эта команда перезаписывает все файлы данных, содержащие записи с изменениями вектора удаления. См. REORG TABLE. - Запустите запись с автоматической компакцией, которая запускает перезапись файла данных с вектором удалений.
События сжатия файлов не имеют строгих гарантий для разрешения изменений, записанных в векторах удаления. Некоторые изменения, записанные в векторах удаления, могут не применяться физически, если целевые файлы данных не являются кандидатами на сжатие файлов.
Физическое удаление старых данных
Измененные данные могут по-прежнему существовать в старых файлах данных таблицы после операции очистки. Вы можете физически удалить данные, например, чтобы сократить затраты на хранение с поставщиком облачных служб или выполнить запросы GDPR.
Чтобы физически удалить старые данные:
- Запуск
REORG TABLE ... APPLY (PURGE) - Запустите
VACUUMс порогом хранения, равным временной метке завершения очистки, чтобы физически удалить файлы из предыдущих версий таблицы. См. статью "Очистка, предусматривающая удаление только метаданных для принудительной перезаписи данных".
Повышение производительности для больших таблиц
Чтобы повысить производительность очистки в больших таблицах, установите значение spark.databricks.delta.reorg.purgeModerows.
Например, установите эту конфигурацию, когда вы очищаете данные вручную с помощью REORG TABLE ... APPLY (PURGE) или когда удаляете векторы удаления с помощью ALTER TABLE DROP FEATURE deletionVectors.
По умолчанию для spark.databricks.delta.reorg.purgeMode задано значение all. В больших таблицах эта операция может быть медленной, так как операции очистки должны сканировать все футеры файлов Parquet, чтобы найти как удаленные данные столбцов, так и мягко удаленные строки.
Значение rows ограничивает операцию на обработку только файлов с мягко удаленными строками. В больших таблицах это может повысить производительность, если многие файлы не содержат обратимо удаленных строк, а таблица не имеет удаленных столбцов.
Limitations
- Риды Iceberg v2 не поддерживают векторы удаления. Apache Iceberg v3 поддерживает векторы удаления таблиц с включёнными чтениями Iceberg. Ознакомьтесь с функциями Apache Iceberg версии 3.
- Инструкцию
нельзя использовать для создания файла манифеста для таблицы с файлами, использующими векторы удаления. Чтобы создать манифест, сначала запустите REORG TABLE ... выражение APPLY (PURGE), а затем запустите выражение GENERATE. При отправке оператораREORGнеобходимо убедиться, что параллельные операции записи не выполняются.- Невозможно добавочно создавать файлы манифеста для таблицы с включенными векторами удаления (например, задав свойство таблицы
delta.compatibility.symlinkFormatManifest.enabled=true).
- Невозможно добавочно создавать файлы манифеста для таблицы с включенными векторами удаления (например, задав свойство таблицы
- Если активировать векторы удаления в материализованном представлении или таблице потоковой передачи, а затем удалить векторы удаления, то векторы удаления не распространяются на будущие записи в представление или таблицу, но существующие векторы удаления остаются.
- Невозможно понизить версию протокола таблицы после включения векторов удаления в материализованном представлении или потоковой таблице, даже если затем отключить векторы удаления.