Если у вас ранее был опыт работы с Luigi, то Operator в Apache Airflow это аналог класса Task в Luigi. Operator это звено в цепочке задач, которое образует DAG. Представим, что вы хотите описать ряд зависимых между собой задач. Например, вам нужно скачать изображение с удалённого хоста и пометить его водным знаком. Такая цепочка может состоять из двух задач:
Каждый из этих шагов и будет отдельным оператором в терминах Apache Airflow.
Если снова взглянуть на картинку из описания DAG, то каждый кружочек это отдельный оператор Airflow.
В Airflow есть ряд готовых операторов, например:
Полный список стандартных операторов можно найти в документации Apache Airflow. PythonOperator, пожалуй, это самый популярный оператор, т.к. он позволяет запускать код на Python.
Начиная с Apache Airflow 2.0 у разработчиков появилась возможность элегантным образом описывать DAG и операторы, используя декораторы.
У читателя может возникнуть вопрос, а можно ли передавать возвращаемые значения функций при запуске PythonOperator? Да, ранее это нужно было делать явно, используя механизм XСom. Начиная со второй версии Airflow при использовании декораторов dag
и task
, это происходит "под капотом" за счёт чего код остаётся чистым. Позже мы увидим как это работает на практике. От себя лишь хочется добавить, что я не рекомендую передавать большой объём данных между операторами, т.к. коммуникация происходит через базу данных путём сериализации/десериализации объектов, что в итоге замедлит выполнение вашего кода.
Сенсоры это разновидность операторов, используемых для организации событийно-ориентированных дата пайплайнов. В Apache Airflow присутствуют следующие сенсоры:
True
Если успешность вашего пайплайна зависит от наступления события, например, появления файла на удалённом хосте или записи в базе данных, то вам нужен сенсор.
Спасибо, поправил! 🤝
>Позже практике мы увидим как это работает Опечатка
Oleg B 12 Июнь 2021
"сериализации/десериализации объетов, что в итоге замедлит выполнение вашего кода." - Вот сдесь поправте слово - объетов