Sobes.tech
Back to questions
Middle
8

Зачем нужны сенсоры в Airflow?

Companies where asked
ИннотехИннотех

Answer from AI

sobes.tech AI

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

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

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

Сенсор — это специальная задача в Airflow, которая периодически проверяет условие и завершает выполнение только тогда, когда оно выполнено. В отличие от обычной задачи, сенсор не “делает” основную бизнес-работу, а ожидает нужное состояние внешнего ресурса или события. Это удобно для оркестрации процессов, где следующий шаг нельзя запускать раньше времени.

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

Например, после выгрузки данных в S3 нужно дождаться появления файла, а затем запустить обработку в Spark.

from airflow import DAG
from airflow.sensors.filesystem import FileSensor
from airflow.operators.empty import EmptyOperator
from datetime import datetime

with DAG(
    dag_id="wait_for_file_example",
    start_date=datetime(2024, 1, 1),
    schedule=None,
    catchup=False,
) as dag:

    wait_for_file = FileSensor(
        task_id="wait_for_input_file",
        filepath="/data/input/events.csv",
        poke_interval=60,
        timeout=3600,
    )

    process_data = EmptyOperator(task_id="process_data")

    wait_for_file >> process_data

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

В этом примере FileSensor проверяет наличие файла /data/input/events.csv. Параметр poke_interval=60 задаёт частоту проверок раз в минуту, а timeout=3600 ограничивает ожидание одним часом. Пока файл не появился, задача-сенсор остаётся активной, и только после успешной проверки запускается следующая задача process_data.

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

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