Я объединил различные хуки, чтобы создать единого оператора в зависимости от моих потребностей. Простой пример - я ударил gcs delete, copy, list method и get_size методы в hook, чтобы создать единственный оператор с именем GcsDataValidationOperator
. Эмпирическое правило будет иметь: Идемпотентность , т. Е. Если вы запускаете несколько раз, он должен давать тот же результат.
Должны ли операторы быть составлены вообще или лучше иметь дискретные
шаги?
Единственный подводный камень - это удобство сопровождения, иногда, когда перехваты меняются в основной ветке, вам нужно будет обновить весь оператор вручную, если есть какие-либо критические изменения.
Есть ли подводные камни, улучшения в вышеперечисленных подходах?
Вы можете использовать PythonOperator
и использовать встроенные хуки с методом .execute
, но это все равно будет означать много деталей в файле DAG. Следовательно, я все еще пошел бы для нового операторского подхода
Есть ли другие способы объединения операторов?
Хуки - это просто интерфейсы для внешних платформ и баз данных, таких как Hive, GCS и т. Д., И они образуют строительные блоки для операторов. Это позволяет создавать новые операторы. Кроме того, это означает, что вы можете настроить шаблонное поле, добавить слабое уведомление на каждом гранулированном шаге внутри вашего нового оператора и иметь свои собственные данные регистрации.
В таксономии воздушного потока, основной мотив крючков такой же, как указано выше, или они также служат некоторым другим целям?
FWIW: я член PMC и участник проекта Airflow.