Проект написан на Airflow. Оркестрируется процесс загрузки и обработки данных двумя ДАГами:
- etl_from_sources_to_internship
Загружает данные из БД internship_sources, переносит и обработывает данные в БД internship_6_db в три слоя: stg, dds, invalid_data. После наполнения слоя dds запускается ДАГ form_datamarts. - form_datamarts
Перезаписывает витрины. Витрины визуализированы с помощью Grafana.
- Установить Docker и Docker Compose
- Клонировать репозиторий и перейти в директорию:
git clone [email protected]:AlexanderKuryatnikov/KorusAirflowProject.git
cd KorusAirflowProject
- Создать файл окружения .env и в нём указать:
- AIRFLOW_UID=50000
- _AIRFLOW_WWW_USER_USERNAME=логин (по умолчанию airflow)
- _AIRFLOW_WWW_USER_PASSWORD=пароль (по умолчанию airflow)
- Если отсутствуют, создать директории config, dags, plugins:
mkdir config dags plugins
- Перед первым запуском выполнить миграцию бащы данных и создать первую учётную запись пользователя:
docker-compose up airflow-init
- Запустить
docker-compose up
- Открыть вебсервер по адресу http://localhost:8080
- Настроить в UI подключение к базам данных (Admin > Connections > Add a new record):
- internship_sources
- Connection Id: db_source
- Connection Type: Postgres
- Host: 10.1.108.29
- Schema: internship_sources
- Login: interns_6
- Port: 5432
- internship_6_db
- Connection Id: db_internship
- Connection Type: Postgres
- Host: 10.1.108.29
- Schema: internship_6_db
- Login: interns_6
- Port: 5432
- internship_sources
- Запустить ДАГи
- Открыть UI визуализации по адресу http://localhost:3000 (логин/пароль по умолчанию admin/admin)
- Настроить подключение к базе данных (Home > Connections > Add new connection > PostgreSQL):
- Name: internship_db
- Host: 10.1.108.29:5432
- Database: internship_6_db
- User: interns_6
- TLS/SSL Mode: disable
- Version: 12
- Импортировать дашборды из KorusAirflowProject/grafana_storage/dashboards, указать internship_db как источних данных
Александр Курятников