首页 > 解决方案 > PythonOperator 或 SimpleHttpOperator 发出 HTTP 获取请求并将结果保存到 GCP 存储

问题描述

我处于学习 Airflow 的早期阶段。我正在学习 Airflow 来构建一个简单的 ETL(ELT?)数据管道,并且正在研究管道的架构(我应该使用哪些运算符)。我的数据管道的基础是:

  1. 从 API 发出 HTTP GET 请求以获取原始数据。
  2. 将原始 JSON 结果保存到 GCP 存储桶中。
  3. 转换数据并保存到 BigQuery 数据库中。

...并且管道将安排为每天运行一次。

正如标题所示,我正在尝试确定 SimpleHttpOperator 或 PythonOperator 是否更适合用于发出 HTTP GET 数据请求。从这篇有点相关的 stackoverflow 帖子stackoverflow post中,作者简单地得出结论:

虽然我想从现在开始我会简单地使用 PythonOperator

编写一个 10-20 行代码的 Python 脚本来发出 http 请求、识别 GCP 存储桶并写入该桶似乎很简单。但是,我不确定这是否是此类任务的最佳方法(调用 api --> 获取数据 --> 写入 gcp 存储桶)。

对此的任何帮助或想法,有关构建类似管道的任何示例链接等都将非常有帮助。提前致谢

标签: google-cloud-platformgoogle-cloud-storageoperatorsairflow

解决方案


我建议您将气流视为处理步骤之间的粘合剂。对 Airflow 执行的处理应该是有条件地触发或不触发步骤,对步骤进行循环并处理错误。

为什么?因为,如果明天您选择更改您的工作流应用程序,您将不必再次编码您的流程,您只需重写工作流逻辑(因为您更改了工作流应用程序)。一个简单的关注点分离。

因此,我建议您将 10-20 行 python 代码部署到 Cloud Functions 中,并设置一个 SimpleHTTPOperator 来调用它。此外,函数比工作流(运行和查看代码)要容易得多。部署和更新也将更容易。


推荐阅读