Kedro 与 Jupyter 笔记本:在 Notebook 中加载 Catalog、Context、Pipelines 与 Session

发布时间:2026/9/15 12:22:30

Kedro 与 Jupyter 笔记本:在 Notebook 中加载 Catalog、Context、Pipelines 与 Session Kedro 与 Jupyter 笔记本在 Notebook 中加载 Catalog、Context、Pipelines 与 Session【免费下载链接】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本指南讲解如何将 Jupyter 笔记本接入 Kedro 项目让笔记本直接访问项目中的catalog、context、pipelines和session四个核心变量并利用%reload_kedro、%load_node、%run_viz等行魔法line magic完成数据探索、节点隔离调试与管道可视化。读完本文你将能够在 Jupyter Notebook、JupyterLab、IPython 终端乃至 Databricks、Google Colab 等 IPython 兼容环境中自由探索和调试 Kedro 项目。准备工作创建一个带 Viz 的示例项目本文以spaceflights项目为例对应spaceflight-pandas-vizstarter你可以使用其他 starter或直接在你已有的 Kedro 项目中实践。kedro new -n spaceflights --toolsviz --exampleyes-n spaceflights指定项目名称可自定义--toolsviz为项目集成 Kedro-Viz 可视化工具后续%run_viz依赖它--exampleyes生成包含示例管道companies/reviews/shuttles 数据处理的完整项目。kedro new的更多选项参见 Create a new Kedro Project。方式一用kedro jupyter notebook启动项目笔记本进入项目目录并启动 Jupytercd spaceflights kedro jupyter notebook首次运行新项目时终端会询问是否加入使用情况分析输入y或n后浏览器自动打开 Jupyter 页面其中列出了项目文件夹。在New下拉菜单中选择Kedro (iris)内核创建新笔记本建议保存在项目的notebooks目录下Kedro (iris) 内核下的新笔记本kedro jupyter notebook背后做了什么从源码看该命令在 jupyter.py 中实现核心流程如下校验notebook与ipykernel可导入并校验项目设置调用_create_kernel()创建或替换名为kedro_package_name的自定义内核显示名称为Kedro (package_name)若指定了--env设置环境变量KEDRO_ENV以--MultiKernelManager.default_kernel_namekedro_package_name启动 Jupyter。_create_kernel()jupyter.py会生成一个内核规范kernel specLinux 下位于~/.local/share/jupyter/kernels/kedro_package_name/其kernel.json的argv末尾追加--ext kedro.ipython从而在每次连接该内核时自动加载 Kedro IPython 扩展。加载扩展后见 load_ipython_extension以下项目变量即注入笔记本作用域变量类型说明catalogkedro.io.DataCatalog包含项目全部数据集的 Data Catalog 实例是context.catalog的快捷方式contextkedro.framework.context.KedroContext提供对 Kedro 库组件的访问的项目上下文pipelinesdict[str, Pipeline]在 pipeline_registry.py 中注册的管道字典sessionkedro.framework.session.session.KedroSession编排一次管道运行的 Kedro 会话变量注入的实际逻辑位于 reload_kedro()通过bootstrap_project引导项目、configure_project配置项目后创建会话与上下文最终以get_ipython().push(...)将四个变量推入笔记本命名空间。若笔记本中访问不到这些变量可能是配置文件格式错误或缺少依赖完整错误信息会显示在启动kedro jupyter notebook的终端或运行%load_ext kedro.ipython的单元格中。方式二在任意 IPython 环境用kedro.ipython扩展catalog、context、pipelines、session同样可在 Databricks 笔记本、Google Colab 等 IPython 兼容环境中使用。它不依赖 Jupyter 服务端适合无法启动本地 Jupyter 的场景。通过%load_ext显式加载扩展In [1]: %load_ext kedro.ipython如果你在 Kedro 项目目录之外启动交互环境需要再用一条行魔法指定项目根目录让 Kedro 能够加载上述四个变量In [2]: %reload_kedro project_root扩展会记住项目路径之后的%reload_kedro无需再传路径In [1]: %load_ext kedro.ipython In [2]: %reload_kedro project_root In [3]: %reload_kedro从源码看扩展加载时会注册%reload_kedro与%load_node两个行魔法并尝试从当前工作目录向上查找 Kedro 项目若找不到会提示Make sure you run %reload_kedro project_rootload_ipython_extension。路径解析逻辑_resolve_project_pathkedro/ipython/init.py依次尝试显式传入的路径 → 本地命名空间中的context.project_path→ 在当前目录向上查找.kedro项目标记。在笔记本中探索 Kedro 项目探索catalog查看、搜索与加载数据集catalog提供keys()、load()、save()等方法对应 kedro.io.DataCatalog 的 API。列出所有数据集名称catalog.keys()输出以 spaceflights 示例项目为例[ companies, reviews, shuttles, preprocessed_companies, preprocessed_shuttles, model_input_table, regressor, metrics, companies_columns, shuttle_passenger_capacity_plot_exp, shuttle_passenger_capacity_plot_go, dummy_confusion_matrix, parameters, params:model_options, params:model_options.test_size, params:model_options.random_state, params:model_options.features ]用正则搜索数据集记不清数据集全名时可用catalog.filter()传入正则表达式catalog.filter(pre*)输出[preprocessed_companies, preprocessed_shuttles]加载数据集catalog.load(shuttles)输出示例加载时会打印INFO日志并返回 pandas DataFrame[06/05/24 12:50:17] INFO Loading data from reviews (CSVDataset)... Out[1]: shuttle_id review_scores_rating review_scores_comfort ... review_scores_price number_of_reviews reviews_per_month 0 45163 91.0 10.0 ... 9.0 26 0.77 1 49438 96.0 10.0 ... 9.0 61 0.62 2 10750 97.0 10.0 ... 10.0 467 4.66 3 4146 95.0 10.0 ... 9.0 318 3.22加载参数parameters是MemoryDataset返回参数字典catalog.load(parameters)输出INFO Loading data from parameters (MemoryDataset)... { model_options: { test_size: 0.2, random_state: 3, features: [ engines, passenger_capacity, crew, d_check_complete, moon_clearance_complete, iata_approved, company_rating, review_scores_rating ] } }若启用了数据集版本管理可加载指定版本例如catalog.load(preprocessed_shuttles, version2024-06-05T15.08.09.255Z)。探索context访问组件与项目元数据context.project_path输出示例路径随用户名和项目位置变化PosixPath(/Users/username/kedro_projects/spaceflights)context可访问 Kedro 的库组件和项目元数据完整属性与方法见 kedro.framework.context.KedroContext API 文档。探索pipelines查看注册管道与节点pipelines是包含项目已注册管道的字典注册入口为src/package_name/pipeline_registry.py中的register_pipelines函数pipelines输出{__default__: Pipeline([ Node(create_confusion_matrix, companies, dummy_confusion_matrix, None), Node(preprocess_companies, companies, [preprocessed_companies, companies_columns], preprocess_companies_node), Node(preprocess_shuttles, shuttles, preprocessed_shuttles, preprocess_shuttles_node), ...查看管道全部输出数据集pipelines[__default__].all_outputs()输出{ X_train, regressor, shuttle_passenger_capacity_plot_exp, y_test, model_input_table, y_train, X_test, metrics, companies_columns, preprocessed_shuttles, preprocessed_companies, shuttle_passenger_capacity_plot_go, dummy_confusion_matrix }探索session在笔记本中运行管道session.run()不带参数时按顺序运行__default__管道等同于在终端执行kedro runsession.run()session.run支持的参数参数名接受类型说明tagsIterable[str]仅用带有这些标签的节点构造管道节点包含任一标签即被纳入runnerAbstractRunnerKedro 运行器实例可为 kedro.runner.ParallelRunner 等node_namesIterable[str]运行指定名称的节点from_nodesIterable[str]以这些节点名作为运行的起点to_nodesIterable[str]以这些节点名作为运行的终点from_inputsIterable[str]以这些数据集名作为运行的起点to_outputsIterable[str]以这些数据集名作为运行的终点load_versionsDict[str, str]数据集名到特定版本时间戳的映射用于加载版本化数据集pipeline_namestr要运行的模块化管道名必须是register_pipelines返回值之一每个会话与一次运行一一对应一个会话只能执行一次成功的运行。如需多次运行先执行%reload_kedro获得新的session。Kedro 行魔法行魔法是交互会话中完成任务的简洁命令。Kedro 提供多个行魔法简化交互环境中的项目操作。%reload_kedro重载 Kedro 变量修改 Data Catalog 后用%reload_kedro重载catalog、context、pipelines和session无需重启内核。它接受可选关键字参数env和params。例如使用prod配置环境%reload_kedro --envprod从源码看magic_reload_kedro其完整签名包括path位置参数可选项目根目录缺省时使用之前设置的路径-e/--envKedro 配置环境名默认localENV_HELP--params以逗号分隔、keyvalue形式的额外参数会传给上下文初始化器例如--params foobar bazPARAMS_ARG_HELP--conf-source项目配置文件所在目录CONF_SOURCE_HELP。更详细说明可运行%reload_kedro?查看。%load_node把节点加载为单元格实验性功能支持 Jupyter Notebook7.0、JupyterLab、IPython 与 VS Code Notebook。遇到问题或想提建议可参见对应 GitHub issuekedro-org/kedro#3580。在 Jupyter Notebook 中使用还需满足最低版本要求ipylab1.0.0 notebook7.0.0使用%load_node需满足两个前提节点必须有名字关于带名节点的创建见 如何创建带名称的节点 相关章节节点的输入必须被持久化。默认 Kedro 将数据保存在内存中需先在 Data Catalog 中声明数据集 以持久化数据。节点名在管道内必须唯一。若未显式命名Kedro 会用函数名、输入与输出的组合自动生成。执行后行魔法会生成多个单元格依次包含节点输入加载xxx catalog.load(dataset)、import 语句、节点函数体及函数调用其实现见 _load_node可通过 _prepare_function_body 看到基于 AST 的依赖提取逻辑自动把同一模块中的辅助函数一并纳入%load_node my-node-name节点的输入必须显式声明在项目 catalog 中。运行生成的单元格即可在隔离环境中复现节点的行为用于探索输入输出或配合下文调试流程排查问题。%run_viz在笔记本中可视化管道若项目尚未安装 Kedro-Viz先在项目目录的终端中执行pip install kedro-viz。然后在单元格中运行%run_viz即可在笔记本内直接展示管道的交互式可视化在笔记本中调试 Kedro 项目用%debug启动交互式调试器使用内置的%debug行魔法启动交互式调试器。把它放在单行语句前即可进入调试模式逐步执行也可用--breakpoint或-b指定断点若在报错后不带参数运行则会加载堆栈并开始调试。%debug在错误发生后运行的流程加载最后一次未处理异常的堆栈跟踪程序停在异常发生处打开交互式 shell用户可在堆栈中导航。随后可检查表达式与参数的值或添加断点。典型调试工作流以某个节点运行失败为例查看日志找到失败节点名例如split_data_node在笔记本中运行%load_node 失败节点名将问题节点内容加载为单元格运行生成的单元格在隔离环境中检查该节点的行为若节点报错使用%debug在笔记本中启动交互式调试会话。%load_node仅支持 Jupyter Notebook7.0与 JupyterLab。在其他交互环境中请手动从项目文件复制相关代码填充节点然后从第 2 步继续。用%pdb自动进入调试器也可用%pdb行魔法让异常发生时自动启动调试器执行前运行%pdb 1或%pdb on开启%pdb 0或%pdb off关闭。ipdb 常用调试命令命令说明list显示当前在文件中的位置h(elp)显示命令列表或查询某个命令的帮助q(uit)退出调试器并结束程序c(ontinue)退出调试器继续运行程序n(ext)执行到下一步enter重复上一条命令p(rint)打印变量s(tep)进入子程序r(eturn)从子程序返回b(reak)插入断点a(rgs)打印当前函数的参数列表更多信息可在调试器中用help命令查看或参考 ipdb 官方文档。高级用法内核管理每个 Kedro 项目都有自己的 Jupyter 内核因此可在同一个 Jupyter 实例中通过切换内核在不同 Kedro 项目间切换。为保证内核始终指向正确的 Python 可执行文件若已存在同名kedro_package_name内核它会被替换见 jupyter.py 中install(userTrue, kernel_name...)的覆盖行为。可用jupyter kernelspec系列命令管理内核例如移除内核jupyter kernelspec remove kernel_nameIPython、JupyterLab 与其他 Jupyter 客户端连接 IPython shell 到 Kedro 项目内核kedro ipython该命令会启动一个已加载扩展的 IPython shell等价于ipython --ext kedro.ipython。在 spaceflights 教程中首次出现过该用法见 测试 Kedro 能加载数据。类似地以下命令创建自动加载扩展的自定义 Jupyter 内核并启动 JupyterLabkedro jupyter lab任何其他 Jupyter 客户端都可连接 Kedro 项目内核例如 Qt Consolejupyter qtconsole --kernelspaceflights这会自动加载 Kedro IPython 扩展并支持内嵌图形等图形化功能补充阅读完整的交互式示例教程可参考 notebooks_tutorial.md项目上下文与会话机制见 extend/session.md 与 kedro.framework.sessionData Catalog 的完整使用见 catalog-data/data_catalog.md相关实现源码与测试kedro/ipython/init.py、kedro/framework/cli/jupyter.py、tests/ipython/test_ipython.py。【免费下载链接】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),仅供参考
延伸阅读

更多相关文章

2026/9/15 12:17:29

Java字符串乱码检测原理与实现

1. 项目概述:Java字符串乱码检测工具在Java开发中,处理字符串编码问题就像在迷宫里寻找出口——稍有不慎就会陷入乱码的泥潭。我最近在代码审查中发现,超过60%的字符处理bug都源于对乱码字符串的错误假设。这个工具类正是为了解决这个痛点而生…

2026/9/15 12:37:31

用C++实现随机Prim算法生成完美迷宫:从图论到游戏地图

1. 项目概述:为什么要用Prim算法生成随机迷宫生成随机迷宫这事儿,乍一看像是某个课程设计的作业题,但真做起来特别有意思。你可能在不少游戏里见过程序生成的迷宫地图,比如Roguelike游戏里的地牢、某些解谜小游戏的关卡&#xff0…

2026/9/15 12:37:31

Kotlin安卓开发核心指南:语法、空安全与协程实战

先说一下进度。这个系列走到第四篇,前面把开发环境、工程结构、界面基础都过了一遍,今天来啃最核心的一块——Kotlin。标题写的是“了解”,但我尽量按“能用”的标准去讲。作为一个从 Java 转过来、带过不少新人的安卓开发,我太清…

2026/9/15 12:37:31

华硕笔记本风扇异常:G-Helper 5分钟诊断修复完整指南

华硕笔记本风扇异常:G-Helper 5分钟诊断修复完整指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Exp…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码