Learning Platform
Глоссарий Troubleshooting
Урок 13.01 · 12 мин
Продвинутый
CapstonePipeline ArchitectureE-CommerceData EngineeringBronze-Silver-Gold

Обзор капстоун-проекта

Цель проекта

В этом модуле вы построите полный data pipeline для e-commerce платформы — от сырых файлов до агрегированных бизнес-таблиц. Pipeline интегрирует навыки из всех предыдущих модулей: DataFrames (М03), joins и window functions (М03), Delta Lake (М10), Great Expectations (М13) и паттерны production deployment (М12).

Результат — рабочий pipeline, который:

  • Загружает данные из CSV и JSON файлов с явной схемой
  • Трансформирует через joins, aggregations и window functions
  • Сохраняет в Delta Lake с bronze/silver/gold архитектурой
  • Валидирует качество через Great Expectations
  • Публикует агрегированные таблицы для аналитики

Архитектура pipeline

Pipeline следует классической medallion architecture — трёхслойной модели обработки данных, которую мы изучали в модуле М01 (архитектура Spark) и М10 (lakehouse форматы):

Архитектура Data Pipeline
orders.csv
customers.json
Bronze Layerсырые данные, partitioned by date
GE валидация ①
Silver Layerenriched: join orders + customersdedup, SCD Type 1 merge
GE валидация ②
Gold Layerdaily_revenue · city_revenue · product_rankings
BI / Dashboards
Ad-hoc Analytics
ML Features

Каждый переход между слоями проходит через quality gate на базе Great Expectations. Если критические expectations не проходят — pipeline останавливается. Некритические ошибки отправляют строки в quarantine table.

Схема данных

Проект использует две таблицы из e-commerce домена. Этот набор данных даёт естественные сценарии для joins, aggregations, window functions и SCD-паттернов.

Таблица orders (CSV)

ПолеТипОписание
order_idINTУникальный идентификатор заказа
customer_idINTFK на таблицу customers
product_idINTИдентификатор товара
quantityINTКоличество единиц
priceDECIMAL(10,2)Цена за единицу
order_dateDATEДата заказа
statusSTRINGcompleted, pending, cancelled, returned

Таблица customers (JSON)

ПолеТипОписание
customer_idINTУникальный идентификатор клиента
nameSTRINGИмя клиента
emailSTRINGEmail
citySTRINGГород
registration_dateDATEДата регистрации

CSV для orders и JSON для customers — типичная ситуация в production: разные source-системы экспортируют данные в разных форматах. PySpark умеет читать оба формата через единый DataFrame API.

Слои обработки

Bronze Layer (сырые данные)

Bronze — «зеркало» исходных данных. Мы читаем CSV/JSON с явной схемой (StructType), партиционируем по order_date (year/month) и сохраняем в Delta Lake. Никаких трансформаций — только schema enforcement и append.

Silver Layer (обогащённые данные)

Silver — результат join orders + customers по customer_id. На этом уровне мы:

  • Удаляем дубликаты (dropDuplicates)
  • Применяем SCD Type 1 merge для customer dimension
  • Добавляем вычисляемые колонки (total_amount = quantity * price)

Gold Layer (бизнес-агрегаты)

Gold — готовые для потребления таблицы:

  • daily_revenue — выручка по дням
  • city_revenue — выручка по городам с running total (window function)
  • product_rankings — ранжирование товаров по revenue (rank, dense_rank)

Запуск проекта

Для запуска pipeline используйте Docker-лабораторию (LAB-06), которая объединяет компоненты из предыдущих лабораторных:

  • Spark cluster (master + workers) — из LAB-01
  • MinIO (S3-compatible storage) — из LAB-03
  • Jupyter Notebook — интерактивная среда для пошагового выполнения

Все файлы pipeline можно запускать как ячейки в Jupyter Notebook или как spark-submit скрипты.

План работы

В следующих уроках мы последовательно построим каждый слой:

  1. Загрузка данных (этот модуль, урок 02) — чтение CSV/JSON, schema enforcement, запись в bronze
  2. Трансформации и хранилище (урок 03) — joins, aggregations, window functions, silver/gold layers
  3. Валидация качества (урок 04) — Great Expectations quality gates на каждом слое
  4. Сервисный слой и обзор (урок 05) — публикация gold tables, pipeline DAG, production considerations

Каждый урок содержит полные примеры кода — вы можете запускать их последовательно в Jupyter и наблюдать, как pipeline растёт от сырых файлов до агрегированных бизнес-таблиц.

Проверка знанийKnowledge check
ОтветAnswer

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 5