Skip to content

nmanachinsky/p2p-analytics-platform

Repository files navigation

License

Аналитическая платформа для P2P-кредитования

Этот проект представляет собой end-to-end платформу для анализа данных peer-to-peer (P2P) кредитования. Платформа реализует медальонную архитектуру (Bronze, Silver, Gold) и включает в себя полный цикл работы с данными: от извлечения из реляционной базы данных до пакетного применения ML-моделей и визуализации в BI.

🌟 Ключевые особенности

  • Современный технологический стек: Docker, Airflow, Spark, HDFS, MinIO, MLflow, Superset.
  • Медальонная архитектура: Четкое разделение данных на слои Bronze (сырые), Silver (очищенные) и Gold (витрины).
  • Оркестрация на Airflow: Все ETL-процессы автоматизированы и управляются с помощью Apache Airflow.
  • MLOps-цикл с MLflow: Полноценное отслеживание экспериментов, регистрация моделей и их версионирование.
  • Интерактивная BI-аналитика: Дашборды в Apache Superset для визуализации ключевых метрик и результатов работы ML-моделей.
  • Удобное управление: Единый интерфейс для управления всеми компонентами через Makefile.

🏛️ Архитектура платформы

Платформа состоит из нескольких взаимосвязанных сервисов, оркестрируемых с помощью Docker Compose. Данные проходят через несколько этапов трансформации, образуя классический ETL/ML-пайплайн.

graph TD
    subgraph Источник Данных
        A[PostgreSQL] --> B{HDFS - Landing Zone};
    end

    subgraph ETL-пайплайн на Spark
        B --> C[Delta Lake - Bronze];
        C --> D[Delta Lake - Silver];
        D --> E{DQ Checks};
        E -- OK --> F[Delta Lake - Gold Витрины];
        F --> G[BI-аналитика];
        D --> H[ML Scoring];
    end

    subgraph MLOps-цикл
        I[JupyterLab] --> J(MLflow Server);
        J --> K[MinIO S3];
        J --> L[PostgreSQL MLflow];
        J --> H;
    end
    
    subgraph Аналитика и Визуализация
        H --> M[Delta Lake - Predictions];
        G(Apache Superset) --> F;
        G --> M;
    end

    style A fill:#D6EAF8,stroke:#333,stroke-width:2px
    style G fill:#D5F5E3,stroke:#333,stroke-width:2px
    style I fill:#FCF3CF,stroke:#333,stroke-width:2px
Loading

🚀 Быстрый старт

Для запуска и управления платформой используется Makefile. Убедитесь, что у вас установлены Docker и Docker Compose.

1. Первоначальная настройка

Эти команды нужно выполнить один раз при первом запуске проекта.

# 1. Запустить все сервисы платформы в фоновом режиме
make up

# 2. Выполнить полную первоначальную настройку:
#    - Загрузить данные из CSV в PostgreSQL
#    - Настроить права доступа в HDFS
make setup-platform

2. Запуск основного ETL-пайплайна

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

# Запустить главный DAG в Airflow
make airflow-trigger

Вы можете отслеживать выполнение в Airflow UI: http://localhost:8080 (логин/пароль: admin/admin).

3. Обучение и регистрация ML-модели

ETL-пайплайн только готовит данные. Модель нужно обучить вручную.

  1. Откройте JupyterLab: http://localhost:8888
  2. Перейдите в папку notebooks/.
  3. Откройте и запустите все ячейки в ноутбуке 01_p2p_model_exploration_and_training.ipynb.

Это действие обучит модель, залогирует ее в MLflow и зарегистрирует с алиасом champion. Вы можете отслеживать эксперименты в MLflow UI: http://localhost:5001.

4. Пакетный скоринг (применение модели)

Теперь, когда модель обучена, можно применить ее ко всем данным для получения предсказаний.

# Запустить скрипт пакетного скоринга
make spark-run script=batch_scoring.py

Этот шаг создаст таблицу gold.loans_with_predictions.

5. BI-аналитика

Финальный шаг — визуализация результатов.

  1. Откройте Superset: http://localhost:8089 (логин/пароль: admin/admin).
  2. Настройте подключение к Trino:
    • Settings -> Database Connections -> + DATABASE.
    • Выберите Trino.
    • SQLALCHEMY URI: trino://superset@trino:8080/delta
    • Протестируйте и сохраните.
  3. Добавьте датасеты:
    • Data -> Datasets -> + DATASET.
    • Выберите P2P Data Warehouse, схему gold и добавьте таблицы:
      • gold_loans_by_state
      • gold_monthly_trends
      • loans_with_predictions
  4. Создайте чарты и дашборд для анализа данных.

🛠️ Команды Makefile

Makefile предоставляет удобный интерфейс для управления платформой.

  • make help: Показать все доступные команды.
  • make up: Запустить все сервисы.
  • make down: Остановить все сервисы.
  • make restart: Перезапустить все сервисы.
  • make logs s=<service_name>: Посмотреть логи конкретного сервиса (например, make logs s=spark-master).
  • make shell s=<service_name>: Зайти в командную строку контейнера (например, make shell s=jupyterlab).
  • make clean: (ОСТОРОЖНО!) Остановить сервисы и удалить все данные в томах (PostgreSQL, HDFS, MinIO).
  • make nuke: (КРАЙНЕ ОПАСНО!) Уничтожить всё: контейнеры, тома, сети и образы проекта.

📂 Структура проекта

.
├── airflow/                # Конфигурация и DAG'и для Airflow
├── config/                 # Централизованные конфигурационные файлы
├── data/                   # Исходные данные (не отслеживаются Git)
├── docker/                 # Dockerfile'ы для кастомных образов
├── notebooks/              # Jupyter-ноутбуки для анализа и ML
├── scripts/                # Вспомогательные скрипты
├── spark_apps/             # Spark-приложения для ETL и ML
├── superset/               # Конфигурация для Superset
├── docker-compose.yaml     # Главный файл Docker Compose
├── Makefile                # Пульт управления проектом
└── README.md               # Этот файл

About

End-to-end data & ML platform for P2P lending analytics.[1] Features medallion architecture, Spark ETL, Airflow orchestration, MLOps with MLflow, and BI dashboards with Superset.

Topics

Resources

License

Stars

Watchers

Forks

Contributors