这些天我正在开发一个新的ETL项目,我想尝试一下Airflow作为工作经理.我和我的同事都是第一次使用Airflow,我们遵循两种不同的方法:我决定编写python函数(运算符,如apache-airflow项目中包含的那些),而我的同事使用气流来调用外部python脚本通过BashOperator.
我想知道是否有类似"良好实践"的东西,如果这两种方法同样好,或者我应该考虑另一种方法.
对我来说,主要区别在于: - 使用BashOperator,您可以使用特定包的特定python环境调用python脚本 - 使用BashOperator任务更独立,并且可以在气流发生时手动启动 - 使用BashOperator任务进行任务通信管理起来有点困难 - 使用BashOperator任务错误和故障更难管理(bash任务如何知道它之前的任务是否失败或成功?).
你怎么看?
在这些情况下,我个人更喜欢使用 PythonOperator 而不是 BashOperator。这是我所做的以及为什么:
setup.py包含气流作为依赖项,以及我的 DAG 需要的任何其他东西。Airflow 服务从安装这些依赖项的 virtualenv 运行。这将处理您提到的有关 BashOperator 的 python 环境。raise AirflowSkipException。仅供参考 BashOperator,如果脚本退出并显示错误代码,Airflow 会将任务标记为失败。
| 归档时间: |
|
| 查看次数: |
1829 次 |
| 最近记录: |