Выбор ответа Junior Parquet и партиционирование спрашивают часто обновлено

Выбор ключа партиционирования

Вопрос

Таблица событий: 500 млн строк в день, запросы почти всегда фильтруют по дате, иногда по user_id (50 млн пользователей). Как партиционировать?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: По дате события; у userid слишком высокая кардинальность для партиций, для него сортировка. Дата даёт умеренное число крупных партиций и совпадает с основным фильтром.

Варианты ответа

  1. По дате события; у user_id слишком высокая кардинальность для партиций, для него сортировкаправильный ответ
  2. По user_id, чтобы запросы по пользователю читали одну партицию, а дату отсекать статистиками
  3. По дате и user_id одновременно, двумя уровнями каталогов, чтобы ускорить оба типа запросов
  4. Не партиционировать вообще: статистик row groups достаточно, чтобы отсекать данные по дате

Разбор

Дата даёт умеренное число крупных партиций и совпадает с основным фильтром. Партиции по user_id превратят таблицу в десятки миллионов крошечных каталогов: мелкие файлы и медленные метаданные. Комбинация с user_id даёт ту же проблему, умноженную на дни. Без партиций каждый запрос по дате читает всю таблицу.

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

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