常见用例

Kedro内置了一些机制供您扩展其功能。本文档将介绍如何针对最常见的用例选择合适的扩展机制。

用例1:如何为Kedro的执行时间线添加额外行为

Kedro管道的执行时间线可以被视为由各种Kedro库组件执行的一系列操作,例如datasetsDataCatalogPipelineNodeKedroContext

在这些组件的生命周期不同阶段,您可能需要添加额外行为:例如,可以在节点运行之前之后添加额外的计算用于性能分析,或者在数据集的I/O操作(即loadsave操作)的之前之后添加额外行为。

现在可以通过使用Hooks来实现,用于定义额外行为以及应在执行时间线的哪个阶段引入该行为。

用例2:如何将Kedro与其他数据源集成

您可以使用datasets来连接各种不同的数据源。如果Kedro未内置支持您计划使用的数据源,您可以创建自定义数据集

用例3:如何添加或修改CLI命令

如果想为特定项目自定义Kedro内置命令(例如kedro run),可以添加一个定义自定义run()函数的cli.py文件。该文件应放置在与settings.py同级目录下(通常是src/项目名称目录)。详见cli.py文件模板

如果你想自定义Kedro命令组中的某个命令,例如kedro pipelinekedro jupyter,你需要从Kedro框架的cli模块导入对应的click命令组。对于kedro pipeline命令,应该使用from kedro.framework.cli.pipeline import pipeline,而对于kedro jupyter命令则使用from kedro.framework.cli.jupyter import jupyter。请注意,即使你不修改它,仍然需要添加上文代码片段中的cli click命令组。

然后,您可以通过将命令添加到点击组来添加或覆盖任何命令,如下面的代码片段所示:

@jupyter.command("notebook")
@env_option(
    help="Open a notebook"
)
def notebook_run(...):
    == ADD YOUR CUSTOM NOTEBOOK COMMAND CODE HERE ==

要在多个项目中复用额外的CLI命令注入功能,请参阅我们的插件系统。例如Kedro-Viz插件提供的kedro viz run命令就是这类命令的典型。该命令设计用于所有Kedro项目,因此它来自独立的插件。

注意

您的插件实现可以利用其他扩展机制,例如Hooks。

用例4:如何自定义项目的初始样板代码

有时您可能希望根据特定需求定制Kedro项目的初始模板。例如,您的组织可能有一个标准的CI脚本,希望包含在每个新的Kedro项目中。为此,请参阅创建Kedro启动器的指南