You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dbutils.notebook.run执行Databricks Notebook报错,%run可正常运行求原因

问题原因及解决方案

核心差异:路径解析规则不同

%run和dbutils.notebook.run对路径的解析逻辑完全不一样:

  • %run的相对路径是基于当前Notebook所在的位置来解析的,比如你在/Users/xxx@xxx.com/folder/main里用%run "../sub/mynotebook",会自动定位到对应层级的目标Notebook。
  • dbutils.notebook.run的相对路径是基于执行身份的个人Workspace根目录(即/Users/你的邮箱/)来解析的。你写dbutils.notebook.run("mynotebook", 3600),系统会去查找/Users/xxxxxxxx@xxxxx.co.uk/mynotebook,但实际你的Notebook在/path/mynotebook或者/Users/xxxxxxxx@xxxxx.co.uk/path/mynotebook,自然找不到,触发路径不存在的错误。

另外错误信息里显示的路径是/Users/xxxxxxxx@xxxxx.co.uk/path/mynotebooks(多了个s),也有可能是你代码里的Notebook名字写错了,需要核对。

执行身份的细微区别

%run是在当前Notebook的交互式会话中执行,完全复用当前用户的权限和上下文;而dbutils.notebook.run本质是启动一个独立的作业执行流程——即使在交互式Notebook里运行,它的路径解析逻辑依然遵循作业的规则,而非交互式会话的相对路径规则。如果后续你把这段代码做成调度作业,还需要确保作业执行身份有访问目标Notebook的权限,但你当前的问题核心还是路径解析错误。

解决方案

  1. 使用完整绝对路径:把dbutils.notebook.run的路径参数改成目标Notebook的绝对路径,比如:
    dbutils.notebook.run("/path/mynotebook", 3600)
    
    或者如果Notebook在你的个人目录下,写全路径:
    dbutils.notebook.run("/Users/xxxxxxxx@xxxxx.co.uk/path/mynotebook", 3600)
    
  2. 核对Notebook名称:检查错误信息里的mynotebooks是否是笔误,确保代码里的名称和实际Notebook完全一致。
  3. 验证权限(可选):如果改完路径还是报错,确认当前用户(或作业执行身份)对目标Notebook有可执行权限——不过你用%run能成功,说明权限大概率没问题。

内容的提问来源于stack exchange,提问作者Patterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:05:27