我什么时候应该使用特定的气流运算符而不是 python 运算符?
When should I use a specific airflow operator over a python operator?
例如,如果我有一个 python 函数,它使用 sqlalchemy 创建一个 my_sql 引擎并将数据提取到 table,我将只创建一个 python运算符并将其连接到该可调用对象。
我宁愿使用 MySqlOperator 而不是将进程包含在 PythonOperator 中的原因是什么?优点是什么?缺点?
MySqlOperator 的设计让您只需提供 SQL:
drop_table_mysql_task = MySqlOperator(
task_id='create_table_mysql', sql="""DROP TABLE table_name;""", dag=dag
)
接线员已经为您处理好一切。您不需要创建 mysql 引擎,甚至不知道 sqlalchemy 是什么。
PythonOperator
存在用于执行任意代码,创建自定义运算符没有意义。
是的 - 如果您愿意,您可以用 PythonOperator
做所有事情。
从您的描述来看,您似乎更喜欢编写脚本并使用 Airflow 安排它们。使 Airflow 成为一个类似 cron-job 的系统——这很琐碎,因为这意味着您没有利用该工具的强大功能。
例如,如果我有一个 python 函数,它使用 sqlalchemy 创建一个 my_sql 引擎并将数据提取到 table,我将只创建一个 python运算符并将其连接到该可调用对象。
我宁愿使用 MySqlOperator 而不是将进程包含在 PythonOperator 中的原因是什么?优点是什么?缺点?
MySqlOperator 的设计让您只需提供 SQL:
drop_table_mysql_task = MySqlOperator(
task_id='create_table_mysql', sql="""DROP TABLE table_name;""", dag=dag
)
接线员已经为您处理好一切。您不需要创建 mysql 引擎,甚至不知道 sqlalchemy 是什么。
PythonOperator
存在用于执行任意代码,创建自定义运算符没有意义。
是的 - 如果您愿意,您可以用 PythonOperator
做所有事情。
从您的描述来看,您似乎更喜欢编写脚本并使用 Airflow 安排它们。使 Airflow 成为一个类似 cron-job 的系统——这很琐碎,因为这意味着您没有利用该工具的强大功能。