如何用TaskFlow API实现多参数按组动态任务映射而非笛卡尔积?
实现Airflow任务参数按组匹配执行(非笛卡尔积)
要实现参数按对应组匹配执行而非生成笛卡尔积,你可以使用Airflow的expand_kwargs方法,将每组参数打包成字典并放入列表中传入,这样任务会严格按你定义的参数组逐一执行。
示例代码修改:
@task def add(x: int, y: int): return x + y # 用字典列表定义每组参数,每个字典对应一次任务调用的完整参数 added_values = add.expand_kwargs([ {"x": 4, "y": 40}, {"x": 8, "y": 80} ])
执行后会生成你需要的两个任务实例:
add(x=4, y=40)add(x=8, y=80)
不会产生笛卡尔积对应的其他组合。
多参数场景扩展:
如果任务有3个及以上参数,同样用字典列表的方式定义每组参数即可:
@task def multi_calc(a: int, b: int, c: int): return a + b * c multi_calc.expand_kwargs([ {"a": 2, "b": 3, "c": 4}, {"a": 5, "b": 6, "c": 7} ])
这样会执行:
multi_calc(a=2, b=3, c=4)multi_calc(a=5, b=6, c=7)
内容的提问来源于stack exchange,提问作者Haha TTpro
相关产品推荐
相关产品推荐

