如何从SimpleHttpOperator

时间:2018-02-25 05:01:58

标签: airflow

据我所知,通过在SimpleHttpOperator中设置xcom_push = True,我可以从How to access the response from Airflow SimpleHttpOperator GET request访问来自Xcom的返回数据。但我不清楚如何才能做到这一点。这是通过创建一个带回调的PythonOperator并在回调中调用xcom_pull吗?一些示例代码很棒。

我要做的是将Google财经的股票价格数据作为CSV数据读取,然后将它们插入MySQL数据库,以了解Airflow。最初我以为我可以使用两个操作符:

SimpleHttpOperator >> MySqlOperator

但现在我想我必须在中间添加PythonOperator?:

SimpleHttpOperator >> PythonOperator >> MySqlOperator

在PythonOperator中,我是否需要将provide_context设置为True才能访问xcom值?

1 个答案:

答案 0 :(得分:3)

你已经关闭但我会使用HttpHookMySqlHook并将它们粘贴在你自己的PythonOperator中。钩子是一个较低级别的原语。

我认为运营商可以执行操作(发送电子邮件,检索状态)或在A和B之间传输数据(其中一个通常是临时/暂存位置)。另一方面,Hook更像是一个开放的数据源或目的地。

一个很好的Airflow介绍性博客文章,涵盖了你的场景(以及更多)这一篇:http://tech.marksblogg.com/airflow-postgres-redis-forex.html

您可能会认为构建自己的PythonOperator涉及很多,但正如您在the full DAG code in the blog above中看到的那样,大多数操作符实际上是在检查传入的数据。

我在Airflow指南中的某处读到,Xcom并不是真正意味着在管道中交换(可能是巨大的)数据的主要方式。它更适用于在DAG中跨任务推送参数。