【问题标题】:How to run a kedro pipeline interactively like a function如何像函数一样以交互方式运行 kedro 管道
【发布时间】:2022-10-25 16:39:53
【问题描述】:
我想在 jupyter notebook 中使用不同的输入运行 kedro 管道,所以是这样的:
data = catalog.load('my_dataset')
params = catalog.load('params:my_params')
pipelines['my_pipeline'](data=my_dataset, params=my_params)
有没有办法做到这一点?另外,如果我必须将一些输入提供给除起始节点之外的其他节点(例如第二个节点),该怎么做?
【问题讨论】:
标签:
python-3.x
jupyter-notebook
ipython
kedro
data-pipeline
【解决方案2】:
关于在 jupyter 中运行管道,您可以使用可用的运行器之一或自定义运行器。 SequentialRunner 是一个示例,可以按如下方式使用:
from kedro.runner import SequentialRunner
SequentialRunner().run(pipeline = your_pipeline, catalog = your_catalog)
如果您使用的是 kedro jupyter 实验室或笔记本,则该目录可用,否则您可以使用 DataCatalog() 创建它。
您可以使用 add_feed_dict 方法或 add 和 save 方法将数据集添加到 DataCatalog(如果要覆盖目录中的数据集,请将标志替换设置为 True)
import pandas as pd
from kedro.io.data_catalog import DataCatalog
df = pd.DataFrame({'col_1': [0, 1], 'col_2': [1, 2]})
io = DataCatalog()
io.add_feed_dict({"new_dataset": df }, replace=True)
如果您想在更改目录中的某些条目后从特定节点启动管道,您可以使用 Pipeline 对象具有的 from_inputs 方法。
【解决方案3】:
所以,要指定@datajoely 的答案:在 IPython / Jupyter Notebook 中运行
session.run(pipeline_name='my_pipeline', from_inputs=['my_dataset', 'params:my_params'])
无需专门使用catalog.load() 加载数据/参数。
我认为没有办法将替代输入提供给管道的中间(非入口)节点。为此,我将分别调用每个节点。