我正在尝试理解在下面的场景中最好的“气流方式”DAG设计是什么。
假设有10个不同的REST API端点,我需要为每个查询收集不同的数据有效负载响应。每个数据响应都需要写入数据湖存储。
我原本希望通过以下方式来实现:
任务#1获取有效负载1。任务#2将有效负载1写入数据湖的中转区。任务#3获取有效载荷2。任务#4将有效负载2写入数据湖的中转区。……直到所有的有效载荷都被写入数据湖。
问题是我如何将数据有效负载从例如任务1(它得到它)传递到需要写入它的任务2。有效负载太大而不能使用Xcom,而且在任何情况下,我都意识到这不是真正应该如何使用Xcoms。
另一种模式是将任务1和任务2、任务3和任务4结合起来,以此类推。但我真的很喜欢这样的想法,即能够跟踪将数据提交到数据湖的具体过程,作为一项独特的任务。
我这样做的理由是,将数据写入到湖中的行为并不简单,而且涉及大量的工作,这似乎证明了它本身就是一项任务。
处理这种情况的正确方法是什么?会非常感谢你的见解。
发布于 2021-10-08 05:02:48
@indrid。您需要使用外部数据存储,类似于s3。在两个任务之间,您将只收到元数据,如文件名。
将数据作为文件发送到ex存储。将元数据发送到xcom。在下游任务中,您应该从xcom获取meta。通过这个元从ex存储中获取数据,比如文件名。
https://stackoverflow.com/questions/69487557
复制相似问题