在Kedro管道中,节点(类似于Python函数)是按顺序声明的。在某些情况下,一个节点的输入是前一个节点的输出。然而,有时在命令行调用kedro run API时,节点不会按顺序运行。
在Kedro的文档中提到,默认情况下节点是按顺序运行的。
我的run.py代码如下:
def main(tags: Iterable[str] = None,env: str = None,runner: Type[AbstractRunner] = None,node_names: Iterable[str] = None,from_nodes: Iterable[str] = None,to_nodes: Iterable[str] = None,from_inputs: Iterable[str] = None,):project_context = ProjectContext(Path.cwd(), env=env)project_context.run( tags=tags, runner=runner, node_names=node_names, from_nodes=from_nodes, to_nodes=to_nodes, from_inputs=from_inputs,)
目前我的最后一个节点有时会在前几个节点之前运行。
回答:
我在Kedro GitHub上收到的回答:
目前,管道完全基于数据集依赖关系(节点的输入和输出)来确定节点执行顺序。因此,唯一能指定节点A必须在节点B之前运行的方法是,将一个虚拟数据集作为节点A的输出和节点B的输入。