Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
Databricks SQL
Databricks Runtime
На этой странице описывается команда, которая оптимизирует OPTIMIZE макет данных Delta Lake. Вы можете оптимизировать подмножество данных или распределить данные по столбцам. Если вы не указываете collocation и таблица не использует ликвидную кластеризацию, Delta Lake выполняет оптимизацию упаковки корзин.
Синтаксис
OPTIMIZE table_name [FULL] [WHERE predicate]
[ZORDER BY (col_name1 [, ...] ) ]
Примечание.
Оптимизация упаковки корзины является идемпотентной: если он выполняется дважды в одном наборе данных, второй запуск не влияет. Он создает равномерно сбалансированные файлы данных относительно их размера на диске, но не обязательно количество кортежей на файл. Эти два показателя чаще всего коррелируются.
Z-Ordering не является идемпотентным, но работает постепенно. Время, затраченное на Z-Порядок, не гарантируется уменьшение числа нескольких запусков. Тем не менее, если новые данные не были добавлены в раздел, который был только Z-Order, при выполнении Z-Ordering снова в этой секции не действует. Z-Ordering создает равномерно сбалансированные файлы данных относительно количества кортежей, но не обязательно размер данных на диске. Эти два меры чаще всего коррелируются, но время оптимизации может возникать при различении.
Примечание.
При использовании Databricks Runtime для управления размером выходного файла задайте конфигурациюspark.databricks.delta.optimize.maxFileSize Spark. Значение по умолчанию — 1073741824 1 ГБ. Указание 104857600 размера файла — 100 МБ.
Параметры
-
Определяет существующую таблицу Delta. Имя не должно включать темпоральную спецификацию или спецификацию параметров.
FULLОбласть применения:
Databricks Runtime 16.0 и вышеПерезаписывает все файлы данных в таблице. Используется для
OPTIMIZE table_name FULL:- Оптимизируйте всю таблицу, включая данные, которые ранее были кластеризованы (для таблиц с использованием отказоустойчивой кластеризации).
- Измените кодек сжатия таблицы с помощью свойства
delta.parquet.compression.codec, чтобы повторно сжать существующие файлы данных.
Чтобы повторно сжать существующие данные после изменения кодека сжатия, выполните следующую команду
OPTIMIZE table_name FULL:-- Change compression codec ALTER TABLE table_name SET TBLPROPERTIES ('delta.parquet.compression.codec' = 'ZSTD'); -- Recompress all existing data files OPTIMIZE table_name FULL;Чтобы оптимизировать подмножество файлов в таблице с включенным кластеризациям жидкости, объедините
FULLс предикатомWHERE(Databricks Runtime 18.1 и более поздних версий). Поддерживаются только простые предикаты диапазона в одном столбце кластеризации. Файл включается, если любая часть его диапазона перекрывается с предикатом. Например, включает файл с диапазономOPTIMIZE events FULL WHERE date > 15,(col_min = 10, col_max = 20)так как диапазон файла перекрывается с предикатом.WHEREОптимизирует подмножество строк, соответствующих предикату секции или кластеризации. Поддерживаются только фильтры для атрибутов секционирования или кластеризации.
Для таблиц, использующих кластеризацию жидкости, используйте
OPTIMIZE table_name FULL WHERE predicateвместо этого (Databricks Runtime 18.1 и более поздних версий).ZORDER BYПримечание.
Databricks рекомендует кластеризацию жидкости для всех новых таблиц вместо Упорядочения Z. См. раздел "Использование кластеризации жидкости" для таблиц.
Сортировка сведений о столбцах в одном наборе файлов. Алгоритмы пропускания данных Delta Lake используют совместное расположение для уменьшения объема данных, которые необходимо считывать. Можно указать несколько столбцов в виде разделенного запятыми списка, но эффективность совместного места уменьшается с каждым дополнительным столбцом.
Это предложение нельзя использовать в таблицах, использующих кластеризацию жидкости.
Примеры
> OPTIMIZE events;
> OPTIMIZE events FULL;
> -- Partitioned table
> OPTIMIZE events WHERE date >= '2017-01-01';
> -- Table with liquid clustering enabled (DBR 18.1 and above)
> OPTIMIZE events FULL WHERE date >= '2025-01-01';
> OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType);
Дополнительные сведения см. в разделе "Оптимизация макета файла данных".