Зачем нужны сенсоры в Airflow?
Ответ от нейросети
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’и, зависящие от внешних систем, без ручного контроля.