如何从 SimpleHttpOperator 访问 GET 内容
How to access GET content from SimpleHttpOperator
我了解到,通过在 SimpleHttpOperator 中设置 xcom_push=True,我可以从 访问 Xcom 返回的数据。但我不太清楚我该怎么做。是通过创建一个带有回调的 PythonOperator 并在回调中调用 xcom_pull 吗?一些示例代码会很高兴看到。
我想做的是从 Google Finance 读取股票价格数据作为 CSV 数据,然后将它们插入 MySQL 数据库以了解 Airflow。最初我以为我可以只使用两个运算符:
SimpleHttpOperator >> MySqlOperator
但现在我想我必须在中间添加 PythonOperator?:
SimpleHttpOperator >> PythonOperator >> MySqlOperator
在 PythonOperator 中,我是否需要将 provide_context 设置为 True 才能访问 xcom 值?
你很接近,但我会使用一个 HttpHook
和一个 MySqlHook
并将它们粘在一起在你自己的 PythonOperator
中。钩子是较低级别的原语。
我认为 Operator 是执行操作(发送电子邮件、检索状态)或在 A 和 B 之间传输数据(其中之一通常是 temporary/staging 位置)的东西。另一方面,Hook 更像是一个开放的数据源或目的地。
一个很好的 Airflow 介绍性博客 post 完全涵盖您的场景(以及更多)是这个:http://tech.marksblogg.com/airflow-postgres-redis-forex.html
您可能会认为构建自己的 PythonOperator
涉及很多,但正如您在 the full DAG code in the blog above 中看到的那样,大多数运算符实际上是在检查传入数据。
我在 Airflow 指南的某个地方读到,Xcom 并不是真正意味着在您的管道中交换(可能是巨大的)数据的主要方式。它更适用于在 DAG 中跨任务推送参数。
我了解到,通过在 SimpleHttpOperator 中设置 xcom_push=True,我可以从
我想做的是从 Google Finance 读取股票价格数据作为 CSV 数据,然后将它们插入 MySQL 数据库以了解 Airflow。最初我以为我可以只使用两个运算符:
SimpleHttpOperator >> MySqlOperator
但现在我想我必须在中间添加 PythonOperator?:
SimpleHttpOperator >> PythonOperator >> MySqlOperator
在 PythonOperator 中,我是否需要将 provide_context 设置为 True 才能访问 xcom 值?
你很接近,但我会使用一个 HttpHook
和一个 MySqlHook
并将它们粘在一起在你自己的 PythonOperator
中。钩子是较低级别的原语。
我认为 Operator 是执行操作(发送电子邮件、检索状态)或在 A 和 B 之间传输数据(其中之一通常是 temporary/staging 位置)的东西。另一方面,Hook 更像是一个开放的数据源或目的地。
一个很好的 Airflow 介绍性博客 post 完全涵盖您的场景(以及更多)是这个:http://tech.marksblogg.com/airflow-postgres-redis-forex.html
您可能会认为构建自己的 PythonOperator
涉及很多,但正如您在 the full DAG code in the blog above 中看到的那样,大多数运算符实际上是在检查传入数据。
我在 Airflow 指南的某个地方读到,Xcom 并不是真正意味着在您的管道中交换(可能是巨大的)数据的主要方式。它更适用于在 DAG 中跨任务推送参数。