Airflow 任务分离

Airflow task separation

我正在尝试了解以下场景的最佳 'Airflow way' DAG 设计。

我需要点击十个不同的 REST API 端点来为每个查询收集不同的数据负载响应。每个数据响应都需要写入数据湖存储。

我原本希望按如下方式处理:

任务#1 获取负载一。 任务 #2 将有效负载一写入数据湖的暂存区。 任务 #3 获取有效载荷二。 任务 #4 将 payload 2 写入数据湖的暂存区。 .... 直到所有有效负载都写入数据湖。

问题是如何将数据有效负载从例如任务 1(获取它)传递到需要写入它的任务 2。有效负载太大而无法使用 Xcom,无论如何我意识到这不是真正应该使用 Xcom 的方式。

替代模式是将任务 1 和 2、任务 3 和 4 等结合起来..但我真的很喜欢这样的想法,即能够将数据提交到数据湖的具体过程作为一项独特的任务进行跟踪.

我的理由是,将数据写入湖中的行为并不简单,涉及大量工作,这似乎证明它本身就是一项任务。

对于这种情况,正确的做法是什么?非常感谢任何见解。

@indrid。您需要使用外部数据存储,有点像 s3。在任务之间,您只会收到元数据,例如文件名。

将数据作为文件发送到 ex 存储。将有关数据的元数据发送到 xcom。在下游任务中,您应该从 xcom 获取元数据。通过此元从 ex 存储中获取数据,例如文件名。