Predicate pushdown и pruning
Вопрос
Объясните, какие механизмы позволяют движку не читать лишние данные из озера, и когда они перестают работать.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Column pruning: только нужные колонки
Partition pruning по каталогам партиций
Пропуск row groups и файлов по min и max, bloom-фильтры
Не работает при фильтре по выражению, а не колонке партиции
Не работает на неотсортированных данных с широкими диапазонами
Табличные форматы хранят статистики файлов в метаданных
Что могут спросить следом
- Что такое скрытое партиционирование в Iceberg?
- Как проверить, сработал ли pruning?
Разбор
Образцовый ответ: «Уровней три. Column pruning: колоночный формат даёт прочитать только колонки из запроса. Partition pruning: по фильтру на колонке партиции движок читает только нужные каталоги. Пропуск данных по статистикам: Parquet хранит min и max по колонкам для каждой row group, а табличные форматы ещё и для каждого файла в метаданных, и движок пропускает всё, где условие заведомо ложно; есть и bloom-фильтры для точечных поисков. Перестаёт работать, когда фильтр стоит на выражении, а не на колонке партиции, когда данные не отсортированы и у каждого блока полный диапазон значений, когда запрос выбирает все колонки. Проверяю по плану и метрикам: сколько файлов и байт прочитано против общего размера».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.