Robot
Складчик
- #1
Практикум по Data Engineering: сквозной ETL на Spark + Postgres + Airflow + BI (Дмитрий Кузьмин)
- Ссылка на картинку

Соберёшь полноценный DE-пайплайн на своём ноутбуке:
S3-lake → Spark → DWH → Airflow → BI
Один проект, который можно показать на собеседовании.
Для тех, кто сильный в SQL, но на собесах упирается в “где пайплайны, инкременты, оркестрация и качество”.
Программа:
0. Окружение: Docker-стенд, проверка сервисов
S3-lake → Spark → DWH → Airflow → BI
Один проект, который можно показать на собеседовании.
Для тех, кто сильный в SQL, но на собесах упирается в “где пайплайны, инкременты, оркестрация и качество”.
Программа:
0. Окружение: Docker-стенд, проверка сервисов
- поднимаем стенд docker compose up и проверяем сервисы (Spark UI, Airflow, Postgres, MinIO)
- учимся читать логи контейнеров и находить причину “не стартует”
- базовая настройка .env и проверка доступа по портам
- быстрый чек-лист “диагностика стенда” (типовые поломки)
- Артефакт: рабочий docker-compose.yml + инструкции + скрины UI сервисов
- раскладываем исходные CSV по ingest_date в S3 (MinIO)
- делаем replace-pattern/идемпотентную загрузку в STG
- вводим контракт: схема, типы, обязательные поля
- sanity-check запросы и первые проверки качества
- Артефакт: структура RAW/STG + скрипты загрузки + набор sanity-check
- проектируем CORE: факт + измерения, ключи, связи
- event-time vs ingest-time: где что использовать и почему
- инкрементальные обновления (SCD/апдейты по ключам где уместно)
- базовые индексы/ограничения в Postgres под CORE
- Артефакт: DWH-слой CORE (DDL + инкрементальные загрузки)
- первая Spark-сессия: чтение/запись, DataFrame API
- базовые трансформации + агрегаты
- работа через pyspark.sql и Spark SQL
- чтение данных из S3 (MinIO) и запись parquet
- Артефакт: первый рабочий ноутбук + mini-job чтение - трансформация - запись
- собираем marts под типовые бизнес-вопросы (продажи/заказы/доставка)
- денормализация: что тащим в витрину и почему
- партиционирование/кластеризация (на уровне хранения и запросов)
- контроль “small files” и базовые правила хранения
- Артефакт: marts-таблицы + объяснение решений (почему такой grain/партиции)
- проверки на дубликаты/пропуски/аномалии (простые, но рабочие)
- таблица результатов DQ-check’ов (история прогонов)
- SLA пайплайна: что меряем и как объяснять “почему отчёт не обновился”
- стоп-кран: когда пайплайн должен падать, а когда просто предупреждать
- Артефакт: DQ-схема + набор проверок + лог результатов
- перенос логики из ноутбука в spark-submit job (шаблон джобы)
- explain(True): читаем план и видим узкие места
- cache/persist, shuffle partitions, контроль skew на базовом уровне
- запись parquet “правильно”: партиции, режимы записи, контроль файлов
- Артефакт: 1–2 production-style Spark jobs + чек-лист оптимизаций
- собираем DAG: зависимости, ретраи, расписание, параметры
- разделяем задачи по слоям, делаем понятный граф
- алерты/уведомления на падения (база)
- дебаг Airflow: логи тасок, где ломается, как чинить
- Артефакт: рабочий DAG + скрины графа/ранов + описание пайплайна
- какие метрики реально нужны (время прогонов, лаг, объёмы, ошибки)
- как “считать здоровье”: success-rate, latency, freshness
- алерты: когда будить, а когда не спамить
- “почему отчёт не обновился” как диагностировать по сигналам
- Артефакт: набор метрик + правила алертов + описание мониторинга
- подключение BI к витрине, один понятный дашборд
- 5–7 метрик + фильтры/срезы (не цирк, а реально для интервью)
- как рассказывать историю проекта: данные → слой → витрина → графики
- Артефакт: дашборд + “история проекта” (готовый текст для резюме/собеса)
Показать больше
Зарегистрируйтесь
, чтобы посмотреть скрытый контент.