Sobes.tech
Назад к вопросам
Middle
12

Что такое DAG в Airflow?

Компании, где спрашивали
ИннотехИннотех

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

DAG в Airflow — это описанный в коде граф задач, где явно задан порядок выполнения. Он нужен для оркестрации пайплайнов: загрузки, обработки и проверки данных. Важно понимать, что DAG задаёт зависимости между шагами, а Airflow уже выполняет их по расписанию или по событию.

Определение:

DAG (Directed Acyclic Graph) — это направленный ациклический граф. В Airflow под DAG обычно понимают набор задач и связей между ними, где каждая задача может запускаться только после завершения зависимых задач.
"Направленный" означает, что связь идёт в одну сторону, а "ациклический" — что нельзя построить маршрут, который вернётся в исходную задачу.

Пример использования:

Типичный DAG в Airflow может описывать ETL-процесс: сначала загрузить данные из источника, затем очистить и преобразовать их, после чего записать результат в хранилище и отправить уведомление об успехе.

from airflow import DAG
from airflow.operators.empty import EmptyOperator
from datetime import datetime

with DAG(
    dag_id="etl_example",
    start_date=datetime(2024, 1, 1),
    schedule="@daily",
    catchup=False,
) as dag:
    start = EmptyOperator(task_id="start")
    extract = EmptyOperator(task_id="extract")
    transform = EmptyOperator(task_id="transform")
    load = EmptyOperator(task_id="load")
    finish = EmptyOperator(task_id="finish")

    start >> extract >> transform >> load >> finish

Пояснение кода:

В этом примере DAG создаётся через контекст with DAG(...) as dag:.
dag_id — уникальное имя пайплайна, start_date — дата, с которой Airflow может начать планирование, schedule="@daily" задаёт ежедневный запуск, а catchup=False отключает догоняющие запуски за прошлые даты.
EmptyOperator здесь используется как заглушка вместо реальных задач, а оператор >> задаёт порядок выполнения: каждая следующая задача стартует после завершения предыдущей.

Ключевые моменты:

  • DAG в Airflow — это не сами данные, а описание процесса их обработки.
  • Задачи в DAG связаны зависимостями и выполняются в заданном порядке.
  • Граф должен быть ациклическим: циклы в зависимостях недопустимы.
  • DAG обычно хранится как Python-код, что удобно для версионирования и review.
  • Airflow использует DAG для планирования, мониторинга и повторных запусков задач.
  • На собеседовании важно уметь отличать DAG как структуру графа от конкретных task/operator.