如何有条件地运行您的Kedro管道的一部分?

时间:2019-11-27 09:50:06

标签: python pipeline kedro

我的管道很大,需要几个小时才能运行。它的一小部分需要经常运行,如何在不触发整个管道的情况下运行它?

2 个答案:

答案 0 :(得分:2)

有多种方法可以指定要运行的节点或管道部分。

  1. 使用kedro run / --to-nodes / --from-nodes之类的--node参数来明确定义需要运行的内容。

  2. kedro>=0.15.2中,您可以定义多个管道,然后仅使用kedro run --pipeline <name>运行其中一个。如果未指定--pipeline参数,则运行默认管道。默认管道可能会结合其他几个管道。有关使用模块化管道的更多信息:https://kedro.readthedocs.io/en/latest/04_user_guide/06_pipelines.html#modular-pipelines

  3. 使用标签。用“ small”之类的标记管道的一小部分,然后执行kedro run --tag small。在此处阅读更多信息:https://kedro.readthedocs.io/en/latest/04_user_guide/05_nodes.html#tagging-nodes

答案 1 :(得分:0)

我建议按照@idanov的建议从cli正确运行您的标签或管道设置。从长远来看,这将使您轻松投入生产。我还要补充一点,您可以在python内部做很多特别的管道修剪和运行,这是一些示例。

?按标签过滤

nodes = pipeline.only_nodes_with_tags('cars')

按节点过滤

nodes = pipeline.only_nodes('b_int_cars')

过滤节点

query_string = 'cars'
nodes = [
   node.name 
   for node in pipeline.nodes 
   if query_string in node.name
   ]
pipeline.only_nodes(*nodes)

仅带有标签的节点

nodes = pipeline.only_nodes_with_tags('cars', 'trains')

仅带有标签的节点

raw_nodes = pipeline.only_nodes_with_tags('raw')
car_nodes = pipeline.only_nodes_with_tags('cars')
raw_car_nodes = raw_nodes & car_nodes
raw_nodes = (
   pipeline
   .only_nodes_with_tags('raw')
   .only_nodes_with_tags('cars')
   )

添加管道

car_nodes = pipeline.only_nodes_with_tags('cars')
train_nodes = pipeline.only_nodes_with_tags('trains')
transportation_nodes = car_nodes + train_nodes

以上是我个人kedro notes的摘录。