Добавление учебных заданий

This commit is contained in:
2025-11-04 14:24:15 +03:00
parent 399df8a941
commit f12acc23d5
2 changed files with 308 additions and 1 deletions
+46 -1
View File
@@ -83,7 +83,8 @@ airflow-docker/
│ ├── input/ # Входные данные
│ └── output/ # Результаты обработки
├── logs/ # Логи Airflow
── README.md # Эта инструкция
── README.md # Эта инструкция
└── educational-tasks.md # Практические задания для студентов
```
## 🎓 Учебные материалы
@@ -121,6 +122,32 @@ airflow-docker/
- `branching_dag.py` - условная логика
- `error_handling_dag.py` - обработка ошибок
## 🎯 Практические задания
Для закрепления знаний по каждому DAG мы подготовили практические задания разного уровня сложности:
### 📋 Учебные задания
В файле **[educational-tasks.md](educational-tasks.md)** вы найдете детальные задания для каждого DAG:
- 🌱 **Начальный уровень**: Базовые задачи по созданию и настройке DAG'ов
- 📚 **Средний уровень**: Работа с данными, файлами и SQL операциями
- 🚀 **Продвинутый уровень**: ETL процессы, ветвление, обработка ошибок
### 🎓 Рекомендуемый путь обучения
1. **Начните с `hello_world_dag.py`** - освоите основы Airflow
2. **Перейдите к `sql_basic_dag.py`** - изучите работу с базами данных
3. **Попрактикуйтесь на `file_operations_dag.py`** - работа с файлами
4. **Освойте ETL на `data_processing_dag.py`** - обработка данных
5. **Изучите продвинутые темы** - ветвление и обработка ошибок
Каждое задание содержит:
- Цель и сложность выполнения
- Конкретные требования к модификации кода
- Ожидаемый результат
- Время на выполнение
## 🔧 Технические детали
### Переменные окружения
@@ -195,6 +222,24 @@ docker-compose restart airflow-webserver
- [Официальная документация Airflow](https://airflow.apache.org/docs/)
- [Учебные материалы в родительской папке](../)
- [Практические задания для студентов](educational-tasks.md)
---
## 🌟 Начало работы с заданиями
После запуска стенда Airflow, откройте файл [educational-tasks.md](educational-tasks.md) и выберите задание, соответствующее вашему уровню подготовки. Каждое задание содержит подробные инструкции и ожидаемые результаты.
**Быстрый старт с заданиями:**
```bash
# Запустите стенд
docker-compose up -d
# Откройте задания в браузере или редакторе
# И следуйте инструкциям из educational-tasks.md
```
Удачи в изучении Apache Airflow!
---
+262
View File
@@ -0,0 +1,262 @@
# Учебные задания по Apache Airflow
Этот документ содержит практические задания для закрепления знаний по Apache Airflow. Каждое задание соответствует одному из учебных DAG'ов и направлено на лучшее понимание конкретных концепций.
## 📋 Общие инструкции
Перед выполнением заданий:
1. Убедитесь, что стенд Airflow запущен: `docker-compose up -d`
2. Проверьте доступность интерфейса: http://localhost:8080
3. Ознакомьтесь с соответствующим DAG'ом в интерфейсе Airflow
---
## 🚀 Задания для hello_world_dag.py
**Цель:** Освоить базовые концепции Airflow - создание задач, зависимости, операторы.
### Задание 1: Модификация существующих задач
**Сложность:** 🟢 Начальная
**Время выполнения:** 10-15 минут
**Задача:**
- Откройте файл `hello_world_dag.py`
- Измените текст в функциях `print_hello()`, `print_date()`, `print_goodbye()` на русский язык
- Добавьте новую задачу, которая выводит текущую погоду (можно использовать фиктивные данные)
**Цель задания:** Понять структуру DAG, научиться добавлять и модифицировать задачи.
### Задание 2: Изменение расписания
**Сложность:** 🟢 Начальная
**Время выполнения:** 5-10 минут
**Задача:**
- Измените `schedule_interval` с ежедневного на еженедельное выполнение
- Добавьте параметр `max_active_runs` для ограничения одновременных запусков
- Проверьте изменения в интерфейсе Airflow
**Цель задания:** Освоить настройку расписания и параметров выполнения DAG.
### Задание 3: Добавление BashOperator
**Сложность:** 🟡 Средняя
**Время выполнения:** 15-20 минут
**Задача:**
- Добавьте задачу с `BashOperator`, которая создает текстовый файл в папке `/opt/airflow/data/output/`
- Настройте зависимости так, чтобы эта задача выполнялась между `date_task` и `end_task`
- Убедитесь, что файл создается при каждом запуске DAG
**Цель задания:** Научиться работать с разными типами операторов.
---
## 🗄️ Задания для sql_basic_dag.py
**Цель:** Освоить работу с базами данных через Airflow.
### Задание 1: Расширение структуры таблицы
**Сложность:** 🟡 Средняя
**Время выполнения:** 20-25 минут
**Задача:**
- Добавьте в таблицу `students_sample` новые поля: `email`, `phone`, `registration_date`
- Модифицируйте SQL запросы для работы с новой структурой
- Добавьте задачу для обновления существующих записей
**Цель задания:** Научиться работать с миграциями схемы базы данных.
### Задание 2: Создание отчетов
**Сложность:** 🟡 Средняя
**Время выполнения:** 25-30 минут
**Задача:**
- Добавьте задачу, которая создает сводный отчет по данным студентов
- Отчет должен содержать: количество студентов, средний возраст, распределение по возрасту
- Сохраните отчет в файл в папке `/opt/airflow/data/output/`
**Цель задания:** Освоить создание аналитических отчетов в DAG'ах.
### Задание 3: Работа с соединениями
**Сложность:** 🟡 Средняя
**Время выполнения:** 15-20 минут
**Задача:**
- Создайте новое соединение к базе данных через Airflow UI
- Модифицируйте DAG для использования нового соединения
- Добавьте обработку ошибок подключения к БД
**Цель задания:** Научиться управлять соединениями с внешними системами.
---
## 📁 Задания для file_operations_dag.py
**Цель:** Освоить работу с файлами и данными в Airflow.
### Задание 1: Модификация генерации данных
**Сложность:** 🟡 Средняя
**Время выполнения:** 20-25 минут
**Задача:**
- Добавьте новые поля в генерируемые данные: `department`, `experience_years`, `education_level`
- Модифицируйте валидацию для проверки новых полей
- Добавьте фильтрацию данных по определенным критериям (например, опыт > 3 года)
**Цель задания:** Научиться работать с различными типами данных и валидацией.
### Задание 2: Создание дополнительных отчетов
**Сложность:** 🟡 Средняя
**Время выполнения:** 25-30 минут
**Задача:**
- Создайте отчет в формате JSON с детальной статистикой по отделам
- Добавьте визуализацию данных с помощью библиотеки matplotlib (сохранение графика в файл)
- Создайте сводку по зарплатам в разных возрастных категориях
**Цель задания:** Освоить создание комплексных отчетов и визуализацию.
### Задание 3: Оптимизация обработки
**Сложность:** 🟠 Продвинутая
**Время выполнения:** 30-35 минут
**Задача:**
- Разделите обработку данных на параллельные задачи для разных отделов
- Добавьте контроль качества данных (проверка на дубликаты, аномалии)
- Реализуйте механизм повторной обработки при ошибках
**Цель задания:** Научиться оптимизировать и делать обработку данных отказоустойчивой.
---
## 🔄 Задания для data_processing_dag.py
**Цель:** Освоить ETL процессы и работу с бизнес-логикой.
### Задание 1: Расширение ETL пайплайна
**Сложность:** 🟡 Средняя
**Время выполнения:** 30-35 минут
**Задача:**
- Добавьте новый источник данных - файл с информацией о продуктах
- Создайте задачу для объединения данных о заказах с информацией о продуктах
- Добавьте расчет общей выручки по продуктам
**Цель задания:** Научиться работать с множественными источниками данных.
### Задание 2: Создание дашборда
**Сложность:** 🟠 Продвинутая
**Время выполнения:** 35-40 минут
**Задача:**
- Создайте HTML-отчет с ключевыми метриками бизнеса
- Добавьте графики продаж по дням и продуктам
- Реализуйте отправку отчета по email (симуляция)
**Цель задания:** Освоить создание бизнес-отчетов и дашбордов.
### Задание 3: Мониторинг качества данных
**Сложность:** 🟠 Продвинутая
**Время выполнения:** 25-30 минут
**Задача:**
- Добавьте проверки качества данных на каждом этапе ETL
- Создайте механизм оповещения о проблемах с данными
- Реализуйте архивирование обработанных данных
**Цель задания:** Научиться обеспечивать качество данных в ETL процессах.
---
## 🌿 Задания для branching_dag.py
**Цель:** Освоить условную логику и ветвление в Airflow.
### Задание 1: Модификация условий ветвления
**Сложность:** 🟡 Средняя
**Время выполнения:** 20-25 минут
**Задача:**
- Измените условие в функции `check_data_quality()` на основе реальных критериев (например, размер файла)
- Добавьте третью ветку обработки для данных "требующих ручной проверки"
- Настройте разные триггерные правила для слияния веток
**Цель задания:** Научиться создавать сложные условия ветвления.
### Задание 2: Реализация реального сценария
**Сложность:** 🟠 Продвинутая
**Время выполнения:** 30-35 минут
**Задача:**
- Создайте реальные задачи обработки для CSV и JSON форматов
- Добавьте валидацию данных в каждой ветке
- Реализуйте механизм сравнения результатов из разных веток
**Цель задания:** Применить ветвление в реальном сценарии обработки данных.
### Задание 3: Динамическое ветвление
**Сложность:** 🟠 Продвинутая
**Время выполнения:** 25-30 минут
**Задача:**
- Реализуйте ветвление на основе внешних параметров (например, переданных через Variables)
- Добавьте обработку случая, когда ни одна ветка не подходит
- Создайте механизм логирования выбранного пути выполнения
**Цель задания:** Освоить динамическое принятие решений в DAG'ах.
---
## ⚠️ Задания для error_handling_dag.py
**Цель:** Освоить обработку ошибок и создание отказоустойчивых пайплайнов.
### Задание 1: Настройка стратегий повторения
**Сложность:** 🟡 Средняя
**Время выполнения:** 20-25 минут
**Задача:**
- Измените параметры `retries` и `retry_delay` для разных задач
- Добавьте экспоненциальную задержку между повторными попытками
- Реализуйте кастомный обработчик ошибок для конкретных исключений
**Цель задания:** Научиться настраивать стратегии обработки ошибок.
### Задание 2: Создание комплексной обработки ошибок
**Сложность:** 🟠 Продвинутая
**Время выполнения:** 30-35 минут
**Задача:**
- Добавьте задачи для разных типов ошибок (сетевая ошибка, ошибка данных, системная ошибка)
- Создайте механизм эскалации ошибок (после N неудачных попыток)
- Реализуйте отправку уведомлений о критических ошибках
**Цель задания:** Освоить создание комплексной системы обработки ошибок.
### Задание 3: Мониторинг и логирование
**Сложность:** 🟠 Продвинутая
**Время выполнения:** 25-30 минут
**Задача:**
- Добавьте детальное логирование всех этапов выполнения
- Создайте задачу для анализа логов и генерации отчетов об ошибках
- Реализуйте механизм автоматического восстановления после сбоев
**Цель задания:** Научиться создавать системы мониторинга и отладки.
---
## 🎯 Рекомендации по выполнению
1. **Начинайте с простых заданий** и постепенно переходите к сложным
2. **Тестируйте каждое изменение** через интерфейс Airflow
3. **Изучайте логи выполнения** для понимания поведения задач
4. **Экспериментируйте** с разными настройками и параметрами
5. **Документируйте** свои решения и находки
## 📊 Оценка прогресса
- 🟢 **Начальный уровень:** Выполнены задания для hello_world_dag и sql_basic_dag
- 🟡 **Средний уровень:** Выполнены задания для file_operations_dag и data_processing_dag
- 🟠 **Продвинутый уровень:** Выполнены все задания, включая branching_dag и error_handling_dag
Удачи в изучении Apache Airflow! 🚀