Инженерия данных

Partitioning

Партиционирование

актуальноТекущий рабочий стандарт

Разделение данных по ключу (обычно по дате), чтобы запрос читал минимум файлов.

Ключевые тезисы

  • Партиция по дате события, а не по дате загрузки — иначе поздние данные ломают историю.
  • Слишком мелкие партиции создают проблему «маленьких файлов» и замедляют чтение.
  • Для ML критично уметь получить срез данных «как он выглядел на дату T».

Подробный разбор

2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.

1

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

Дата события против даты загрузки.

Партиционировать почти всегда следует по дате события. Тогда поздно пришедшие данные попадут в свою историческую партицию, и пересчёт признаков «на момент времени» останется корректным.

  • Партиция по дате загрузки удобна инженеру и вредна аналитику: история «плывёт».
  • Слишком детальное партиционирование (по часу и по клиенту) порождает миллионы мелких файлов.
  • Ориентир по размеру одного файла: сотни мегабайт, не килобайты.
2

Проблема маленьких файлов

Классическая беда озёр данных.

Каждый файл — это отдельный запрос к объектному хранилищу и отдельная задача в движке. Десятки тысяч файлов по 200 КБ читаются на порядок дольше, чем сотня файлов по 200 МБ с тем же объёмом данных.

На практике

Лечение: регулярная компактация (OPTIMIZE в Delta, compaction в Iceberg) и запись с явным контролем числа выходных файлов (repartition / coalesce).

Связанные темы

Платформа данных

Warehouse, Lake, Lakehouse80%

Хранилище, озеро, lakehouse · Инженерия данных

Три способа хранить аналитические данные: строгая схема, сырые файлы или гибрид с транзакциями поверх объектного хранилища.

File Formats80%

Форматы хранения · Инженерия данных

Колоночные форматы против строковых: почему Parquet почти всегда лучше CSV для аналитики.

Analytical SQL80%

Аналитический SQL · Инженерия данных

Оконные функции, агрегации и CTE — основной инструмент подготовки признаков на больших данных.

ETL vs ELT80%

ETL и ELT · Инженерия данных

Преобразовывать данные до загрузки или уже внутри хранилища — и почему индустрия сместилась ко второму.

Batch and Streaming80%

Батч и стриминг · Инженерия данных

Обработка по расписанию против непрерывной обработки событий. Разные задержки, разные гарантии, разная стоимость.

Orchestration80%

Оркестрация пайплайнов · Инженерия данных

Планировщик, который знает зависимости между задачами, повторяет упавшие и не даёт запускать одно и то же дважды.

Spark80%

Spark · Инженерия данных

Распределённая обработка больших объёмов данных: тот случай, когда данные не помещаются на одну машину.

Kafka80%

Kafka · Инженерия данных

Распределённый журнал событий: основа потоковой архитектуры и источник данных для онлайн-признаков.

ML Pipelines80%

ML-пайплайны · MLOps

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

Data Versioning80%

Версионирование данных · MLOps

Данные меняются чаще кода — без их версий эксперимент не воспроизвести.