Динамическое удаление файлов

Динамическое удаление файлов может значительно повысить производительность многих запросов в таблицах Delta Lake. Триггеры динамической очистки файлов срабатывают на основе решений оптимизатора запросов для запросов, содержащих оператор фильтрации или WHERE условия. Вы должны использовать вычислительные ресурсы с поддержкой Photon, чтобы обеспечить использование динамического удаления файлов в инструкциях MERGE, UPDATE и DELETE. Только выражения SELECT гарантируют использование динамического удаления файлов, если Photon не используется.

Динамическое удаление файлов особенно эффективно для несекционированных таблиц или для соединений с несекционированными столбцами. Влияние динамической очистки файлов часто связано с кластеризацией данных, поэтому рекомендуется использовать «жидкую кластеризацию», чтобы максимально увеличить выгоду. См. раздел "Использование кластеризации жидкости" для таблиц.

Для ознакомления с фоновыми сведениями и вариантами использования динамической очистки файлов см. более быстрые SQL-запросы в Delta Lake с динамической очисткой файлов.

Конфигурация

Динамическая очистка файлов управляется следующими параметрами конфигурации Apache Spark:

  • spark.databricks.optimizer.dynamicFilePruning (по умолчанию — true): основной флаг, который направляет оптимизатор на применение фильтров. Если задано значение false, динамическое удаление файлов не будет действовать.
  • spark.databricks.optimizer.deltaTableSizeThreshold (значение по умолчанию — 10,000,000,000 bytes (10 GB)): представляет минимальный размер таблицы Delta (в байтах) на стороне пробы соединения, необходимой для активации динамической очистки файлов. Если размер пробы не очень большой, вероятно, не стоит снижать фильтры, и мы можем просто просканировать всю таблицу. Размер таблицы Delta можно найти, выполнив команду DESCRIBE DETAIL table_name, а затем просмотрев столбец sizeInBytes.
  • spark.databricks.optimizer.deltaTableFilesThreshold (значение по умолчанию — 10): представляет количество файлов таблицы Delta на стороне зонда соединения, необходимого для активации динамической очистки файлов. Если боковая таблица пробы содержит меньше файлов, чем пороговое значение, динамическая обрезка файлов не запускается. Если таблица содержит только несколько файлов, возможно, не стоит включить динамическое удаление файлов. Размер таблицы Delta можно найти, выполнив команду DESCRIBE DETAIL table_name, а затем просмотрев столбец numFiles.