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

能否通过Databricks dbutils按顺序运行多个Notebook?已遇执行限制

用dbutils实现Databricks主Notebook按顺序运行子Notebook

完全可以通过dbutils.notebook.run()方法实现主Notebook按指定顺序调用子Notebook,不需要依赖Databricks Workflow的自动运行ID,具体实现方式如下:

核心方法说明

dbutils.notebook.run()是Databricks内置的工具方法,专门用于在Notebook中调用其他Notebook,支持指定运行超时时间、传递参数,还能获取子Notebook的返回结果。

按顺序执行的示例代码

在主Notebook中,按你需要的顺序依次调用每个子Notebook即可,示例如下:

# 按顺序运行子Notebook1,设置超时时间为3600秒(1小时)
dbutils.notebook.run(
  path="/Workspace/Users/xxx@xxx.com/sub_notebook_1",  # 子Notebook的完整Workspace路径
  timeout_seconds=3600,
  arguments={"param1": "value1", "param2": "value2"}  # 可选:传递给子Notebook的参数
)

# 运行子Notebook2,需等待Notebook1执行完成后才会启动
notebook2_result = dbutils.notebook.run(
  path="/Workspace/Users/xxx@xxx.com/sub_notebook_2",
  timeout_seconds=3600
)

# 可根据子Notebook的返回结果做后续处理
print(f"子Notebook2执行结果:{notebook2_result}")

# 继续运行后续子Notebook
dbutils.notebook.run(
  path="/Workspace/Users/xxx@xxx.com/sub_notebook_3",
  timeout_seconds=3600
)

子Notebook接收参数与返回结果

如果需要在子Notebook中接收主Notebook传递的参数,可使用dbutils.widgets.get()获取;执行完成后还能返回结果给主Notebook:

# 子Notebook中获取主Notebook传递的参数
param1 = dbutils.widgets.get("param1")
param2 = dbutils.widgets.get("param2")

# 执行业务逻辑
# ...

# 返回结果给主Notebook
dbutils.notebook.exit("执行成功,共处理100条数据")

注意事项

  • 路径正确性:子Notebook的路径必须是完整的Workspace路径,可在Databricks界面右键子Notebook复制路径
  • 超时设置:根据子Notebook的实际运行时长合理设置timeout_seconds,避免因超时导致执行中断
  • 权限问题:运行主Notebook的账号需要拥有所有子Notebook的执行权限,以及对应集群的使用权限
  • 集群资源:所有子Notebook会在同一个集群中运行,需确保集群资源足够支撑所有任务的执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:40:05