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

Databricks notebook中如何在同一单元格内运行多个%run语句?

解决方案

问题原因

  1. 直接在单个单元格内写多个%run语句报错:%run属于Databricks的单元格级魔法命令,单个单元格仅允许存在一个%run指令,且必须放在单元格首行,多个同类型魔法命令无法被解析器识别,因此会抛出正则匹配失败的报错。
  2. dbutils.notebook.run方案未生效:大概率是路径填写错误、超时时间设置过短,另外该方法默认是独立运行目标笔记本,不会将目标笔记本的变量、函数等上下文导入当前笔记本,如果你需要复用目标笔记本的内容,该方案本身不符合需求。

可行方案

方案1:需要复用目标笔记本的变量/函数(上下文共享)

适用于Databricks Runtime 11.3 LTS及以上版本,效果和逐个运行%run完全一致,目标笔记本的所有内容都会导入当前上下文:

from databricks.sdk import WorkspaceClient
w = WorkspaceClient()

# 替换为你自己的笔记本绝对路径列表
notebook_paths = [
    "/Workspace/Users/你的账号/目标笔记本1",
    "/Workspace/Users/你的账号/目标笔记本2",
    "/Workspace/Users/你的账号/目标笔记本3"
]

for path in notebook_paths:
    # 导出笔记本内容并在当前上下文执行
    exec(w.workspace.export(path).content.decode("utf-8"))
    print(f"已完成导入笔记本:{path}")

方案2:仅需要按顺序执行笔记本,无需共享上下文

修正你之前的dbutils.notebook.run写法,注意填写正确的绝对路径,根据实际运行时长调整超时时间:

# 替换为你自己的笔记本绝对路径列表
notebooks = [
    "/Workspace/Users/你的账号/目标笔记本1",
    "/Workspace/Users/你的账号/目标笔记本2",
    "/Workspace/Users/你的账号/目标笔记本3"
]

for n in notebooks:
    try:
        # 第二个参数为超时时间,单位为秒,可根据实际运行时长调整
        run_result = dbutils.notebook.run(n, 300)
        print(f"已完成运行笔记本:{n},运行结果:{run_result}")
    except Exception as e:
        print(f"运行笔记本{n}失败,错误信息:{str(e)}")

方案3:低版本Runtime可选方案

如果你的Databricks Runtime版本低于11.3,也可以直接通过工作流创建多任务作业,将需要运行的笔记本按顺序添加为作业任务,提交作业后即可自动按顺序运行所有笔记本,无需手动逐个执行单元格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:09:03