我啥时候应该在 python 运算符上使用特定的气流运算符?
Posted
技术标签:
【中文标题】我啥时候应该在 python 运算符上使用特定的气流运算符?【英文标题】:When should I use a specific airflow operator over a python operator?我什么时候应该在 python 运算符上使用特定的气流运算符? 【发布时间】:2022-01-19 01:31:15 【问题描述】:例如,如果我有一个 python 函数,它使用 sqlalchemy 创建一个 my_sql 引擎并将数据提取到一个表中,我只需创建一个 python 运算符并将其连接到该可调用对象。
我宁愿使用 mysqlOperator 而不是将进程包含在 PythonOperator 中的原因是什么?有哪些优点?缺点?
【问题讨论】:
【参考方案1】: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 的系统 - 这是一件小事,因为这意味着您没有利用该工具的强大功能。
【讨论】:
知道了,这就是我使用 Airflow 的方式。所以本质上,你会说使用 PythonOperator 是一种偏好(在这种情况下),但是这样做,我并没有充分利用 Airflow 的潜力?除了懒惰地使用该工具之外,没有任何特别的利弊? PythonOperators 很棒,但例如许多(如果不是全部)逻辑应该在挂钩中。我建议您阅读有关如何在 Airflow 上进行开发的信息。不要像编写脚本那样编写代码并尝试安排它...以 Airflow 方式编写代码。 所有的逻辑......意味着某些事情,如 SQL 摄取、将文件加载到 S3 等?以上是关于我啥时候应该在 python 运算符上使用特定的气流运算符?的主要内容,如果未能解决你的问题,请参考以下文章
Quorum Vs Versioning,我啥时候应该使用啥?