我正在尝试掌握气流模型来安排我的ETL火花作业。
我想以声明的方式为我的工作建立执行图。
所以基本上我有以下内容:
此作业汇总“ ds1”的分区,并从中输出一些业务结果。
所以基本上我有1个分区到许多分区依赖性。
我不能仅仅建立这样的dag:
ds1 >> ds2
我需要这样的东西:
ds1(partition_1) >> ds2
ds1(partition_2) >> ds2
ds1(partition_3) >> ds2
其中ds1使用分区参数进行参数化
这将起作用,但是用于不同分区的“ ds1”任务将始终重写自身的结果,因为它们计算的是同一件事。
要克服这种行为,我想我可以使用像这样的传感器:
ds1 >> sensor(partition_1) >> all_success
ds1 >> sensor(partition_2) >> all_success
ds1 >> sensor(partition_3) >> all_success
all_success >> ds2
这是在气流中做到这一点的唯一方法吗? 气流中惯用的吗?
我有使用Luigi的经验,可以很优雅地完成对Luigi的依赖,您可以说:
ds2 requires [ds1(partition_1), ds1(partition_2), ds1(partition_3)]
此Luigi ds2任务将运行ds1丢失分区的计算,然后将计算ds2分区。看起来简单明了。 这样的行为可以在气流中完成吗? 也许气流中还有其他方法可以解决这种依赖性?
所以问题是气流在惯常情况下如何与1到多个分区相关性图一起工作?
我希望问题清楚。
感谢您的帮助!