Ответ вслух Senior Parquet и партиционирование обновлено

Predicate pushdown и pruning

Вопрос

Объясните, какие механизмы позволяют движку не читать лишние данные из озера, и когда они перестают работать.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Уровней три. Column pruning: колоночный формат даёт прочитать только колонки из запроса.

Что должно прозвучать в ответе

  • Column pruning: только нужные колонки

  • Partition pruning по каталогам партиций

  • Пропуск row groups и файлов по min и max, bloom-фильтры

  • Не работает при фильтре по выражению, а не колонке партиции

  • Не работает на неотсортированных данных с широкими диапазонами

  • Табличные форматы хранят статистики файлов в метаданных

Что могут спросить следом

  • Что такое скрытое партиционирование в Iceberg?
  • Как проверить, сработал ли pruning?

Разбор

Образцовый ответ: «Уровней три. Column pruning: колоночный формат даёт прочитать только колонки из запроса. Partition pruning: по фильтру на колонке партиции движок читает только нужные каталоги. Пропуск данных по статистикам: Parquet хранит min и max по колонкам для каждой row group, а табличные форматы ещё и для каждого файла в метаданных, и движок пропускает всё, где условие заведомо ложно; есть и bloom-фильтры для точечных поисков. Перестаёт работать, когда фильтр стоит на выражении, а не на колонке партиции, когда данные не отсортированы и у каждого блока полный диапазон значений, когда запрос выбирает все колонки. Проверяю по плану и метрикам: сколько файлов и байт прочитано против общего размера».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.