Использование измельчения вариантов для оптимизации производительности

Декомпозиция Variant повышает производительность запросов для столбцов VARIANT, сохраняя часто встречающиеся поля в виде отдельных столбцов в базовых файлах Parquet. Шреддинг уменьшает количество операций ввода-вывода, необходимых для чтения полей, и улучшает сжатие за счёт использования колоночного формата вместо двоичного BLOB-объекта.

См. VARIANTтип, Поддержка типа Variant для Apache Iceberg и Delta Lake и Запрос данных типа Variant.

Requirements

Для чтения и записи разделённых таблиц VARIANT требуется Databricks Runtime 17.3 или более поздняя версия. Для оптимальной производительности запросов с использованием сбора статистики вариантов и пропуска данных Databricks рекомендует Databricks Runtime 18.1 или более поздней версии.

Включение измельчения

Начиная с Databricks Runtime 17.3, шреддинг автоматически включается при создании новой таблицы с одним или несколькими столбцами VARIANT с помощью CREATE TABLE.

CREATE OR REPLACE TABLE и ALTER TABLE не включают автоматическое измельчение. Это позволяет избежать изменения поведения измельчения существующих таблиц и рабочих нагрузок.

Для существующих таблиц можно вручную включить шреддинг, установив для свойства таблицы enableVariantShredding значение TRUE, и отключить его, установив для этого свойства значение FALSE:

Озеро Дельта

ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'true');

Таблица Айсберга

ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'true');

Убедитесь, что измельчение включено, проверив, что для свойства enableVariantShredding таблицы задано значение true.

Отключить измельчение для конкретной таблицы

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

Озеро Дельта

ALTER TABLE my_table SET TBLPROPERTIES ('delta.enableVariantShredding' = 'false');

Таблица Айсберга

ALTER TABLE my_table SET TBLPROPERTIES ('iceberg.enableVariantShredding' = 'false');

Убрать сегментирование из существующей таблицы

Чтобы удалить измельчение в существующей таблице, удалите функцию с ALTER TABLE помощью команды. Эта операция также переписывает измельченные VARIANT данные в месте в неизмененном VARIANT формате и устанавливает для свойства enableVariantShredding таблицы значение false.

ALTER TABLE my_table DROP FEATURE "variantShredding";

Ограничения

  • Измельчение данных создает некоторые издержки на операции записи.
  • Включение измельчения не преобразует существующие VARIANT данные в таблице автоматически. Он применяется только к данным, записанным после включения функции. Чтобы переписать существующие VARIANT данные, используйте REORG TABLE my_table APPLY (SHRED VARIANT).
  • Измельчение применяется к столбцам VARIANT или полям верхнего уровня VARIANT в структурах, за исключением VARIANT данных, хранящихся в массивах или картах.