ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Kedro 完全指南:用软件工程最佳实践构建生产级数据与机器学习管道

Kedro 完全指南:用软件工程最佳实践构建生产级数据与机器学习管道 Kedro 完全指南用软件工程最佳实践构建生产级数据与机器学习管道【免费下载链接】kedroKedro is a toolbox for production-ready data science. It uses software engineering best practices to help you create data engineering and data science pipelines that are reproducible, maintainable, and modular.项目地址: https://gitcode.com/GitHub_Trending/ke/kedro导读Kedro 是一个面向生产环境数据工程与数据科学场景的开源 Python 框架它把软件工程的最佳实践模块化、可复现、可维护系统性地引入数据管道开发。本篇指南以本仓库根目录的 README.md 为核心骨架结合仓库内源码、配置与文档完整讲解 Kedro 的定位、安装方式、五大核心特性、核心概念与项目结构、快速上手流程以及其版本支持策略与社区生态。读完本文你将掌握如何在真实项目中安装、创建、组织并运行一个 Kedro 项目并能从源码层面理解其 CLI、Data Catalog、Pipeline 与 Runner 等关键组件的工作方式。Kedro 是什么Kedro 是一个用于生产级数据工程与数据科学管道production-ready data engineering and data science pipelines的工具箱。它的设计目标是帮助团队创建**可复现reproducible、可维护maintainable、模块化modular**的数据工程与数据科学管道并将软件工程最佳实践作为底层原则。Kedro 是一个由 LF AI Data Foundation。从仓库的 pyproject.toml 可以看到它要求 Python 版本不低于 3.10并依赖click命令行、cookiecutter项目模板生成、dynaconf与omegaconf配置加载、fsspec文件系统抽象、pluggy钩子机制等关键库其版本信息定义在 kedro/init.py 中当前仓库版本为1.5.0。值得留意的是Kedro 的适用方式非常灵活详见 docs/getting-started/architecture_overview.md端到端使用框架、项目模板、starters 与库全部采用获得 Kedro 的完整价值按需选用库组件在既有代码库中仅引入DataCatalogI/O、OmegaConfigLoader、Pipeline 与 Runner 等独立组件无需套用项目模板扩展 Kedro开发自定义 starter、插件、hooks 等扩展。如何安装 KedroKedro 支持 macOS、Linux 与 Windows 三大平台详见 docs/getting-started/install.md安装前置条件为Python 3.10与git。官方强烈建议为每一个新 Kedro 项目单独创建虚拟环境以隔离依赖。从 PyPI 安装最直接的安装方式是从 Python Package IndexPyPI安装uv pip install kedro使用uv add kedro则可以把 Kedro 声明到项目的pyproject.toml中并自动生成锁文件uv add kedro如果不使用uv也可以用传统工具pip install kedro poetry add kedro使用 conda 安装Kedro 同样可以通过 conda-forge 频道安装conda install -c conda-forge kedro也可以创建独立的 conda 环境官方安装文档示例使用 Python 3.13conda create --name kedro-environment python3.13 kedro --yes conda activate kedro-environment从源码安装最新版本如果需要抢先体验尚未正式发布的 Kedro 版本可以直接从main分支安装uv pip install githttps://github.com/kedro-org/kedromain验证安装安装完成后通过kedro info验证。在 kedro/framework/cli/cli.py 中可以看到info命令的实现它会打印 Kedro 的 ASCII 艺术 Logo 与版本号并列出当前环境中通过入口点entry points注册的所有已安装插件及其版本。kedro info如果你在运行命令时遇到 command not found 或其它异常请先确认当前虚拟环境是否已激活以及是否使用了项目管理工具要求的前缀如uv run kedro。Kedro 的五大核心特性README 用一张特性表概括了 Kedro 的核心能力以下逐项结合仓库源码与文档展开讲解。1. 项目模板Project TemplateKedro 提供一个标准、可修改、开箱即用的项目模板其设计基于 Cookiecutter Data Science生成逻辑由 kedro/framework/cli/starters.py 中的new命令驱动。从 Kedro 0.19 起运行kedro new时可以选择在项目中包含哪些工具详见 docs/create/new_project_tools.md 与 starters 源码中的TOOLS_ARG_HELP帮助文本工具作用Linting通过 Ruff 提供基础代码规范检查Testing通过 pytest 提供基础测试框架Custom Logging提供更丰富的日志配置选项Documentation使用 Sphinx 搭建项目文档Data Structure提供分层的数据存储目录结构PySpark提供使用 PySpark 所需的配置对应的 CLI 用法为kedro new --toolslint,test,log,docs,data,pyspark # 或任意子集 kedro new --toolsall kedro new --toolsnone2. 数据目录Data CatalogData Catalog 是一系列轻量级数据连接器data connectors用于跨多种文件格式与文件系统保存和加载数据覆盖本地与网络文件系统、云对象存储以及 HDFS对于基于文件系统的数据还支持数据与模型版本管理versioning。其核心实现位于 kedro/io/data_catalog.py正如其模块文档所述DataCatalog持有AbstractDataset实现的实例从程序的任何位置提供load与save能力。它还通过_LazyDataset实现了懒加载——数据集对象只有在真正被请求时才实例化从而优化启动性能详见 docs/catalog-data/lazy_loading.md。数据集配置的解析由 kedro/io/catalog_config_resolver.py 负责基础的 I/O 抽象定义在 kedro/io/core.py具体数据集实现CSV、Excel、Parquet 等由独立的kedro-datasets包提供。一个典型的catalog.yml配置位于项目的conf/base/目录形如companies: type: pandas.CSVDataset filepath: data/01_raw/companies.csv3. 管道抽象Pipeline AbstractionKedro 提供管道抽象自动解析纯 Python 函数之间的依赖关系并支持使用 Kedro-Viz 对数据管道进行可视化。管道与节点的核心实现位于 kedro/pipeline/pipeline.py 与 kedro/pipeline/node.py。Node 是管道的基本构件其构造函数签名为见 kedro/pipeline/node.pyNode( func, # 被包装的纯 Python 函数 inputs, # 输入字符串 / 字符串列表 / 名称到参数的映射或 None outputs, # 输出字符串 / 字符串列表 / 名称到结果的映射或 None nameNone, # 节点名称 tagsNone, # 标签可用于分组与选择性运行 confirmsNone, # 运行结束后确认存在的数据集 namespaceNone # 命名空间用于大规模管道的组织 )管道则根据节点间的输入输出依赖自动确定执行顺序——它并不一定按照传入节点的先后顺序执行见 docs/getting-started/kedro_concepts.md。管道的实际执行由 kedro/runner/runner.py 中的AbstractRunner及其子类SequentialRunner、ParallelRunner、ThreadRunner完成它们负责按依赖顺序调度节点、通过目录加载与保存数据并支持异步 I/Ois_async参数与仅运行缺失输出only_missing_outputs等模式。项目的可运行管道通过pipeline_registry.py中的register_pipelines()函数注册返回dict[str, Pipeline]。4. 编码标准Coding StandardsKedro 项目内置一整套工程化规范测试驱动开发使用pytest仓库中 tests/ 目录包含完整的单元与集成测试覆盖率配置fail_under 100见 pyproject.toml文档化使用 Sphinx / MkDocs 生成项目文档仓库的 docs/ 目录即 MkDocs 站点代码规范内置 Ruff 配置line-length 88启用 Pyflakes、pycodestyle、isort、pyupgrade、Pylint、flake8-bandit 等规则集日志使用 Python 标准logging库模板中附带默认日志配置 kedro/framework/project/default_logging.yml。更详细的说明可参考 docs/develop/linting.md 与 docs/develop/automated_testing.md。5. 灵活部署Flexible DeploymentKedro 支持单机与分布式两种部署策略并对 Argo、Prefect、Kubeflow、AWS Batch、Databricks 等平台提供额外支持。仓库中对应文档位于 docs/deploy/supported-platforms/包含 airflow、aws_batch、aws_step_functions、azure、dagster、dask、databricks、kubeflow、prefect、vertexai 等专项指南单机与分布式部署的一般性指导见 docs/deploy/single_machine.md 与 docs/deploy/distributed.md。快速上手从零创建一个 Kedro 项目官方最推荐的入门路径是使用 starters 创建项目。以 Spaceflights太空航班预测starter 为例# 1. 使用 uvx 运行 kedro new无需先安装 Kedro 到系统环境 uvx kedro new --starter spaceflights-pandas --name spaceflights # 2. 进入生成的项目目录 cd spaceflights # 3. 同步项目依赖并运行默认管道 uv sync uv run kedro run --pipelines __default__关于uvx的说明uvx是uv tool run的别名它会在一个临时、隔离的环境中运行kedro new不会污染你的系统环境。项目创建完成后后续命令如uv sync、uv run kedro都在项目自己的虚拟环境中执行。如果你更习惯传统方式也可以先全局安装 Kedro再执行kedro newpipx run kedro new # 使用 pipx # 或 uvx kedro new # 使用 uv # 或conda 方式 conda create --name kedro-environment python3.13 kedro --yes conda activate kedro-environment kedro newkedro new支持多种交互/非交互模式详见 kedro/framework/cli/starters.py 与 features/new.feature通过--config指定 YAML 配置文件进行非交互式创建通过--starter指定 starter 模板通过--tools控制工具集见上文。核心概念速览在动手之前先掌握四个核心概念详见 docs/getting-started/kedro_concepts.mdNode节点对纯 Python 函数的包装显式声明函数的输入与输出是管道的最小构件Pipeline管道组织一组节点的依赖关系与执行顺序自动连接输入输出同时保持代码模块化Data Catalog数据目录项目全部数据源的注册表将节点输入输出的名称映射为具体数据集项目模板结构Kedro 项目遵循默认目录约定conf/、data/、docs/、notebooks/、src/、tests/等便于团队协作。一个最简节点与管道示例取自概念文档from kedro.pipeline import Node from kedro.pipeline import Pipeline def return_greeting(): return Hello def join_statements(greeting): return f{greeting} Kedro! return_greeting_node Node(funcreturn_greeting, inputsNone, outputsmy_salutation) join_statements_node Node(funcjoin_statements, inputsmy_salutation, outputsmy_message) greeting_pipeline Pipeline([return_greeting_node, join_statements_node])验证与常用命令kedro info # 查看版本与已安装插件 kedro --version # 仅查看版本号 kedro run # 运行默认管道 kedro run --pipelines __default__从 kedro/framework/cli/cli.py 的KedroCLI实现可以看出Kedro CLI 分为两组命令全局命令new、starter任何目录可用与项目专属命令run、package、jupyter、pipeline、catalog、registry、ipython、server等必须在项目目录内使用。CLI 通过bootstrap_project探测项目根目录且支持插件通过入口点覆盖内置命令项目自身的cli.py还可以继续覆盖插件命令优先级为内置命令 插件命令 项目自定义cli.py。完整命令参考见 docs/getting-started/commands_reference.md。Kedro 项目结构Kedro 项目遵循默认模板使用语义化命名组织数据、笔记本、配置与源码。以全部工具都被选中的默认结构为例project-dir # 模板的父目录 ├── conf # 项目配置文件含 base 与 local 两个子目录 ├── data # 本地项目数据不纳入版本控制 ├── docs # 项目文档 ├── notebooks # 项目相关的 Jupyter 笔记本实验代码先放这里成熟后移入 src ├── src # 项目源码 ├── tests # 单元与集成测试 ├── .gitignore ├── pyproject.toml # 标识项目根目录包含项目元数据 ├── README.md └── requirements.txt # 项目依赖为兼容传统工作流保留其中值得重点关注的是conf/base/存放需要跨安装环境共享的项目设置典型文件包括catalog.yml数据目录配置、logging.yml日志配置、parameters.yml机器学习实验参数如训练/测试划分比例、迭代次数conf/local/存放不应共享的个人设置与敏感信息如访问凭据credentials.yml该目录被.gitignore忽略src/package_name/项目源码所在其中pipeline_registry.py必须包含返回dict[str, Pipeline]的register_pipelines()函数settings.py用于注册库组件与自定义 hookspyproject.toml通过package_name、project_name、kedro_init_version等元数据标识项目根目录。配置加载的具体机制分层配置、模板化、凭据处理详见 docs/configure/configuration_basics.md 与 docs/configure/parameters_and_credentials.md。Kedro 的五层架构Kedro 在宏观上由五个部分组成对应 docs/getting-started/architecture_overview.mdKedro Project开发者日常打交道的对象即上文所述的标准项目结构Kedro Framework项目与库组件之间的接口包含 kedro/framework/session/管理一次 Kedro run 的生命周期、kedro/framework/context/持有配置与核心功能、kedro/framework/hooks/扩展点规格与 kedro/framework/cli/内置 CLI 命令Kedro Starter用于生成包含样板代码的项目官方维护一组 starters也支持自定义Kedro Library独立的功能单元包括 kedro/config/ 中的OmegaConfigLoader配置解析与加载、kedro/pipeline/管道建模、kedro/runner/不同执行策略与 kedro/io/DataCatalog与数据集实现Kedro Extension自定义 starter、带额外 hook 实现的 Python 库、额外 CLI 命令如 Kedro-Viz、自定义库组件等。这种分层设计保证了Pipeline 与 IO 相互独立、Config 不依赖 Runner 等上层等架构约束——仓库通过 pyproject.toml 中的import-linter契约CLI Context Library, Runner Extras IO Pipeline分层契约、Pipeline and IO are independent独立性契约、Config 与 Runner/IO/Pipeline 双向禁依赖契约在 CI 中强制校验这些依赖边界。使用 Kedro-Viz 可视化管道Kedro 的管道可视化能力由独立的 Kedro-Viz 项目提供用于自动解析节点依赖并生成交互式管道图。Kedro 官方文档为新手与中级用户提供了专门的可视化指南包括分层展示、命名空间折叠、标签过滤、指标对比等功能。对于尚处于设计阶段、尚未编写代码的场景可以使用浏览器端的Kedro Pipeline Builder详见 docs/getting-started/pipeline_builder.md这是一个拖拽式的可视化设计工具无需安装 Kedro 即可在浏览器中搭建管道、预览生成的 Kedro 代码与配置并导出 ZIP 项目脚手架继续本地开发。它还会校验图中是否存在循环依赖与非法命名等错误。与 Jupyter 笔记本协作Kedro 提供了完善的 Jupyter 笔记本集成方案详见 docs/integrations-and-plugins/notebooks_and_ipython/支持在笔记本中加载节点、重载 Kedro 上下文等操作相关魔术命令实现于 kedro/ipython/。仓库内还包含一个完整的 notebook 示例项目 docs/integrations-and-plugins/notebooks_and_ipython/notebook-example/展示如何把笔记本接入 Kedro 项目。为什么 Kedro 存在Kedro 诞生于作者团队在交付真实 ML 应用时积累的最佳实践以及踩过的坑——尤其是面对海量未经验证的原始数据时。README 明确了开发 Kedro 要解决的三个问题解决 Jupyter 笔记本、一次性脚本与胶水代码的主要缺陷——专注于创建可维护的数据工程与数据科学代码增强团队协作——不同成员对软件工程概念的掌握程度各不相同统一框架降低了协作门槛提升效率——模块化与关注点分离等实践催生了可复用分析代码。社区、贡献与引用贡献Kedro 欢迎各类贡献仓库的 CONTRIBUTING.md 提供了详细指引数据集实现类贡献提交到kedro-datasets最常被接受因为无需改动框架本身。学习资源官方文档提供 FAQ、课程、速查表 与 Spaceflights 教程社区中还有不断增长的博客、视频与项目清单。引用如果 Kedro 用于学术研究例如可复现研究可以使用仓库中的 CITATION.cff 文件生成引用信息。Python 版本支持政策Kedro 对 Python 版本的支持遵循明确的双轨政策README 与 docs/getting-started/install.md 均有说明核心 Kedro Framework支持 CPython 核心团队当前积极维护的所有 Python 版本当某个 Python 版本停止维护EOL时Kedro 将随之放弃对它的支持这不视为破坏性变更。从 pyproject.toml 的classifiers可以看到当前版本声明支持 Python 3.10 至 3.14kedro/init.py 中还会对尚未完全兼容的新版本如 Python 3.15发出KedroPythonVersionWarning警告。Kedro Datasetskedro-datasets包遵循 NEP 29 版本支持政策通常会先于框架放弃旧版 Python 支持因为该包依赖众多遵循 NEP 29 的第三方库。此外升级 Kedro 时遵循 Semantic Versioning 中的迁移指南并同步更新项目pyproject.toml中的kedro_init_version。总结Kedro 是一个面向生产环境的开源 Python 数据管道框架由 LF AI Data Foundation 托管支持 macOS、Linux、Windows安装前置条件为 Python 3.10 与 git可通过uv、pip、poetry、conda等任意主流工具安装五大核心特性为项目模板、Data Catalog、管道抽象、编码标准与灵活部署推荐入门路径是uvx kedro new --starter spaceflights-pandas --name spaceflights随后运行kedro run --pipelines __default__验证项目结构遵循标准模板conf、data、docs、notebooks、src、testspipeline_registry.py注册可运行管道settings.py配置项目设置框架、库与扩展的分层架构由 import-linter 契约在 CI 中强制约束核心框架与kedro-datasets采用不同的 Python 版本支持政策升级时遵循语义化版本并参考 RELEASE.md 迁移指南。【免费下载链接】kedroKedro is a toolbox for production-ready data science. It uses software engineering best practices to help you create data engineering and data science pipelines that are reproducible, maintainable, and modular.项目地址: https://gitcode.com/GitHub_Trending/ke/kedro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表