Kedro架构概览

在工作中利用Kedro有多种方式,您可以:

  • 承诺使用Kedro的全部功能(框架、项目、启动器和库);这样能更好地发挥Kedro的全部价值主张

  • 您可以将Kedro作为Python库使用其部分功能,如DataCatalog(输入/输出)、OmegaConfigLoader、Pipelines和Runner;这最适合那些不想采用Kedro项目模板的工作流程

  • 或者,您可以为Kedro开发扩展,例如自定义启动器、插件、钩子等

从高层次来看,Kedro主要由五个核心部分组成:

Kedro architecture diagram

Kedro项目

作为数据管道开发人员,您将与一个Kedro项目进行交互,该项目包含以下内容:

  • conf/ 目录,包含项目的配置信息,例如数据目录配置、参数等。

  • src 目录包含项目的源代码,其中包括:

    • pipelines 目录,包含您的流水线源代码。

    • settings.py 文件包含项目的设置,例如库组件注册、自定义钩子注册等。所有可用设置都在项目设置章节中列出并进行了说明。

    • pipeline_registry.py 文件定义了项目流水线,即可以通过 kedro run --pipeline 命令运行的流水线。

    • __main__.py 文件作为项目在package mode中的主要入口点。

  • pyproject.toml 通过提供项目元数据来标识项目根目录,包括:

    • package_name: 项目包的有效Python包名称。

    • project_name: 项目的可读名称。

    • kedro_init_version: 生成项目时使用的Kedro版本。

Kedro框架

Kedro框架作为Kedro项目与Kedro库组件之间的接口。Kedro框架的主要构建模块包括:

  • session 负责管理Kedro运行的生命周期。

  • context 保存了配置和Kedro的核心功能,同时也是与核心库组件交互的主要入口点。

  • hooks 定义了所有可用于扩展Kedro的钩子规范。

  • cli 定义了Kedro内置的CLI命令和工具,用于从插件加载自定义CLI命令。

Kedro 入门模板

你可以使用Kedro starter来生成包含样板代码的Kedro项目。我们维护了一套官方starter,但你也可以选择使用自定义starter。

Kedro库

Kedro库由多个独立单元组成,每个单元负责数据管道中的某一计算环节:

  • OmegaConfigLoader 提供了解析和加载Kedro项目中定义配置的实用功能。

  • pipeline 提供了一系列抽象概念来建模数据管道。

  • runner 为数据管道的不同执行策略提供了抽象层。

  • io 提供了一系列抽象来处理项目中的输入/输出操作,包括 DataCatalog 和多种 Dataset 实现。

Kedro扩展

你也可以通过Kedro扩展来增强项目中的Kedro功能,这些扩展可以是自定义启动器、包含额外钩子实现的Python库、额外的CLI命令(如Kedro-Viz),或是自定义库组件实现。

如果您创建了一个Kedro扩展,我们欢迎各种形式的贡献。请查阅我们的Kedro贡献指南。对kedro-datasets的数据集贡献是最常被接受的,因为它们不需要对框架本身进行任何修改。不过,我们也鼓励对任何其他kedro-plugins的贡献。