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