Data engineering
Parquet: тест с выбором ответа
Шесть вопросов, проходящих сквозь весь юнит. Каждый — это решение, которое ты принимаешь, проектируя таблицу в озере данных: не определение для пересказа, а компромисс, который надо взвесить против реального запроса и реальной цены.
Убедись, что умеешь связать колоночную раскладку, статистики футера, encoding против compression, размер row group и продакшен-ловушки — синтез, к которому вёл урок.
Таблица events из 40 колонок запрашивается как SELECT user_id, country WHERE day = '2024-02-01'. Два независимых механизма Parquet делают это гораздо дешевле, чем CSV. Какие?
В таблице есть статистики по day на каждую row group, но WHERE day = '2024-02-01' всё равно сканирует почти все row groups. Какая причина наиболее вероятна?
Коллега говорит: 'Parquet сжимает данные, значит encoding и compression — это одно и то же.' Какая точная поправка?
Ты включаешь dictionary encoding на колонке случайных UUID. Какой вероятный исход и почему?
Kafka-консьюмер сбрасывает крошечный Parquet-файл в S3 каждые 10 секунд. Дашборды над таблицей стали мучительно медленными. Какое решение даёт наибольший рычаг?
Сырые Parquet-файлы в директории дают тебе колоночное хранение и pushdown. Что добавляют сверху Iceberg, Delta Lake и Hudi и почему это важно?
Сквозная линия юнита — один цикл проектирования: колоночная раскладка даёт column pruning, min/max в футере дают пропуск row group и pages (predicate pushdown) — но только когда данные кластеризованы по колонкам фильтра. Encoding и compression — отдельные наложенные выигрыши, и dictionary encoding бьёт по рукам на колонках высокой кардинальности. Повторяющиеся продакшен-ловушки — это small-files problem (лечится compaction, а не кодеком получше) и размер row group. А поскольку у сырого Parquet нет транзакций, table formats — Iceberg, Delta Lake, Hudi — оборачивают его слоем манифеста ради ACID, time travel, безопасной schema evolution и pruning на уровне манифеста.