Первые 2 раздела

This commit is contained in:
2025-12-06 14:50:13 +03:00
parent 2d3eb8eab4
commit f811226648
5 changed files with 62 additions and 4 deletions
+10 -2
View File
@@ -1,9 +1,17 @@
# Почему Apache Airflow стал незаменимым инструментом для работы с данными
# Почему Apache Airflow стал незаменимым инструментом для работы с данными
Обычно работа с автоматизацией процессов обработки информации начинается с ручного управления задачами. Например, в машинном обучении это может включать подготовку наборов данных, обучение моделей, анализ результатов и развертывание решений в рабочей среде. По мере роста команды и развития продукта эти процессы усложняются: увеличивается количество повторяющихся операций, появляются зависимости между задачами, и каждая из них приобретает всё большее значение для бизнеса. В результате формируется полноценный конвейер задач, требующий регулярного запуска.
![Введение в Apache Airflow](./_attachments/airflow_introduction.png)
```mermaid
flowchart LR
in[Данные] --> op1[Операция № 1] --> op2[Операция № 2] --> op3[Операция № 3] --> out[Данные]
subgraph PIPE[Конвейер]
op1
op2
op3
end
```
Аналогичная ситуация возникает при обработке данных: в определенный момент необходимо собрать актуальную информацию, преобразовать её и выполнить различные операции — создать витрину данных и сохранить в базу, обучить модель машинного обучения, подготовить отчет в Excel и разослать его по электронной почте. Вариантов множество, и для решения таких задач требуются специализированные инструменты.
@@ -13,6 +13,18 @@
Проще говоря, DAG — это упорядоченный набор задач, которые выполняются строго по расписанию и никогда не повторяются в рамках одного запуска. Создавая пайплайны для обработки данных, вы фактически создаете DAG.
![Пример направленного ациклического графа](_attachments/dag_example_directed_graph.png)
```mermaid
flowchart LR
n1((1)) --> n2((2))
n1 --> n3((3))
n2 --> n4((4))
n3 --> n6((6))
n6 --> n7((7))
n7 --> n12
n4 --> n12((12))
```
# Шаги вашего пайплайна: Задачи
@@ -26,14 +38,52 @@
На примере ниже видно, как задача E зависит от успешного завершения всех предыдущих задач:
![DAG как последовательность задач](_attachments/dag_as_task_sequence.png)
```mermaid
flowchart LR
A["Task A"] --> B["Task B"]
A --> C["Task C"]
B --> D["Task D"]
C --> D
D --> E["Task E"]
```
Airflow позволяет создавать сложные сценарии:
- Зависимости между разными DAG-ами с помощью TriggerDagRunOperator и ExternalTaskSensor
- Условное выполнение задач в зависимости от результатов предыдущих шагов
- Сложные ветвления и параллельные ветки выполнения
![Пример сложного DAG в Airflow](_attachments/complex_dag_example.png)
```mermaid
flowchart LR
%% без цветов, только форма и рамка
classDef taskGroup stroke-width:3px;
classDef endpoint stroke-width:2px,stroke-dasharray: 5 3;
start(("начало")):::endpoint --> print_start["print_start_bash"]
print_start --> py1["python_function_with_input_1"]
print_start --> py4["python_function_with_input_4"]
py1 --> py2["python_function_with_input_2"]
py1 --> py3["python_function_with_input_3"]
py4 --> py5["python_function_with_input_5"]
py4 --> py6["python_function_with_input_6"]
py2 --> py_join["python_function_with_input"]
py3 --> py_join
py5 --> py_join
py6 --> py_join
py_join --> tg["task_group_with_two_tasks"]:::taskGroup
tg --> dyn123["dynamic_task_123"]
tg --> dyn456["dynamic_task_456"]
dyn123 --> finish(("конец")):::endpoint
dyn456 --> finish
```
# Инструменты для выполнения: Операторы
Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB