【问题标题】:How to access GET content from SimpleHttpOperator如何从 SimpleHttpOperator 访问 GET 内容
【发布时间】:2018-02-26 10:17:50
【问题描述】:

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

我想做的是从 Google Finance 中读取股票价格数据作为 CSV 数据,然后将它们插入 MySQL 数据库,以了解 Airflow。最初我以为我可以只使用两个运算符:

SimpleHttpOperator >> MySqlOperator

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

SimpleHttpOperator >> PythonOperator >> MySqlOperator

在 PythonOperator 中是否需要通过设置为 True 的 provide_context 才能访问 xcom 值?

【问题讨论】:

    标签: airflow


    【解决方案1】:

    您已经很接近了,但我会使用 HttpHookMySqlHook 并将它们粘合到您自己的 PythonOperator 中。钩子是较低级别的原语。

    我认为 Operator 可以执行操作(发送电子邮件、检索状态)或在 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 中跨任务推送参数。

    【讨论】:

    • XComs 让任务交换消息,允许更细微的控制形式和共享状态。名称是“cross-communication”的缩写。
    猜你喜欢
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    相关资源
    最近更新 更多