Пропуск данных для Delta Lake
Примечание.
В Databricks Runtime 13.3 и более поздних версиях Databricks рекомендует использовать жидкостную кластеризацию для макета таблицы Delta. Кластеризация несовместима с Упорядочением Z. См. Использование кластеризации жидкости для таблиц Delta.
Информация о пропуске данных собирается автоматически при записи данных в таблицу Delta. Delta Lake в Azure Databricks использует эти сведения (минимальные и максимальные значения, значения NULL и общие записи на файл) во время запроса, чтобы обеспечить более быстрые запросы.
Для столбцов, используемых в инструкциях ZORDER
, необходимо собрать статистику. См. раздел "Что такое Z-упорядочение?".
Задать столбцы статистики Delta
По умолчанию Delta Lake собирает статистику по первым 32 столбцам, определенным в схеме таблицы. Если включена прогнозная оптимизация, статистика пропуска файлов выбирается интеллектуально и не ограничивается первыми 32 столбцами. Предсказательная оптимизация автоматически выполняет команду ANALYZE
для сбора статистики в управляемых таблицах каталога Unity. Databricks рекомендует включить прогнозную оптимизацию для всех управляемых таблиц каталога Unity, чтобы упростить обслуживание данных и сократить затраты на хранение. См. прогнозную оптимизацию для таблиц, управляемых каталогом Unity.
Если вы не используете прогнозную оптимизацию, можно изменить поведение, которое ограничивает коллекции статистики до 32 столбцов, задав одно из следующих свойств таблицы:
Свойство таблицы | Поддерживается среда выполнения Databricks | Description |
---|---|---|
delta.dataSkippingNumIndexedCols |
Все поддерживаемые версии среды выполнения Databricks | Увеличьте или уменьшите количество столбцов, в которых Delta собирает статистику. Зависит от порядка столбцов. |
delta.dataSkippingStatsColumns |
Databricks Runtime 13.3 LTS и более поздних версий | Укажите список имен столбцов, для которых Delta Lake собирает статистику. Замены dataSkippingNumIndexedCols . |
Свойства таблицы можно задать при создании таблицы или с помощью инструкций ALTER TABLE
. См. справочник по свойствам таблицы Delta .
Обновление этих свойств не выполняет автоматическую перекомпьютерную статистику для существующих данных. Скорее, это влияет на поведение будущей коллекции статистики при добавлении или обновлении данных в таблице. Delta Lake не использует статистику для столбцов, не включенных в текущий список столбцов статистики.
В Databricks Runtime 14.3 LTS и более поздних версиях, если вы изменили свойства таблицы или изменили указанные столбцы для статистики, можно вручную активировать повторную компиляцию статистики для таблицы Delta с помощью следующей команды:
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
Примечание.
Длинные строки усечены во время сбора статистики. Вы можете исключить длинные строковые столбцы из коллекции статистики, особенно если столбцы часто не используются для фильтрации запросов.
Что такое Упорядочение Z?
Примечание.
Databricks рекомендует использовать кластеризацию жидкости для всех новых таблиц Delta. Нельзя использовать ZORDER
в сочетании с отказоустойчивой кластеризации. См. Использование кластеризации жидкости для таблиц Delta.
Z-упорядочение — это техника для размещения связанной информации в одном и том же наборе файлов. Такое совместное использование автоматически применяется в алгоритмах пропуска данных в Delta Lake на платформе Azure Databricks. Это позволяет значительно уменьшить объем данных, которые необходимо считывать Delta Lake в Azure Databricks. Для Z-order данных необходимо указать столбцы для сортировки в разделе ZORDER BY
.
OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)
Если вы ожидаете, что столбец обычно используется в предикатах запросов и этот столбец имеет высокую кардинальность (то есть, большое количество разных значений), используйте ZORDER BY
.
Можно указать несколько столбцов для ZORDER BY
в виде разделенного запятыми списка. Однако эффективность локальности снижается с каждым дополнительным столбцом. Z-упорядочение по столбцам, на которых не собрана статистика, будет неэффективным и пустой тратой ресурсов. Это связано с тем, что для пропуска данных требуются локальные метрики столбцов, такие как минимальное, максимальное значение и количество. Вы можете настроить сбор статистики для определенных столбцов, переупорядочение столбцов в схеме или увеличить количество столбцов для сбора статистики.
Примечание.
Порядок Z не является идемпотентным , но направлен на добавочную операцию. Время, которое требуется для Z-упорядочения, не гарантируется, чтобы сократить количество нескольких запусков. Однако если новые данные не были добавлены в раздел, который только что был упорядочен по Z, то другое упорядочивание по Z этого раздела не будет иметь никакого эффекта.
Z-упорядочение предназначено для создания равномерно сбалансированных файлов данных относительно количества кортежей, но не обязательно размера данных на диске. Две меры чаще всего коррелируются, но могут возникнуть ситуации, когда это не так, что приводит к искажению времени оптимизации задач.
Например, если вы
ZORDER BY
дату и ваши последние записи становятся намного шире (например, более длинные массивы или строковые значения), то ожидается, что длительность задач заданияOPTIMIZE
будет искажена, как и результирующий размер файла. Однако это проблема самой командыOPTIMIZE
; она не должна оказывать негативное влияние на последующие запросы.