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

如何获取Databricks中通过%run执行的子笔记本的上下文信息

问题核心原因

%run 属于内联执行模式,运行时会将子笔记本的所有代码完整插入到父笔记本的%run语句所在位置,在父笔记本的同一个执行进程内运行,因此默认调用dbutils.notebook.getContext()获取到的永远是父进程的上下文,也就是父笔记本的信息。

可行解决方案

方案1:使用dbutils.notebook.run()替代%run(推荐)

该方法会将子笔记本作为独立的任务触发运行,拥有独立的执行上下文,子笔记本内直接调用原有代码就能拿到自身的上下文:

  1. 父笔记本notebook_1的代码调整为:
# notebook_1
# 第二个参数为任务超时时间(单位:秒),第三个为自定义传参,无传参需求可留空
dbutils.notebook.run("./notebook_2", 60)
  1. 子笔记本notebook_2的代码无需改动,运行后打印的就是自身的上下文、笔记本ID等信息。
    注意:该模式下父子笔记本的变量不互通,如果需要传递参数可以在第三个参数位置传入字典,子笔记本用dbutils.widgets.get()即可获取对应参数。

方案2:必须使用%run时的手动标记方案

如果因为需要共享变量等原因必须保留%run的内联模式,可以手动给子笔记本标记自身标识:

# notebook_2
import json
# 提前写入当前笔记本的固定ID/路径,可在笔记本页面的URL或者详情页查询到
SELF_NOTEBOOK_ID = "你的notebook_2的实际ID"
SELF_NOTEBOOK_PATH = "./notebook_2"

def get_current_notebook_context():
    base_context = json.loads(dbutils.notebook.entry_point.getDbutils().notebook().getContext().toJson())
    # 追加子笔记本自身的标识信息
    base_context["notebook_id"] = SELF_NOTEBOOK_ID
    base_context["notebook_path"] = SELF_NOTEBOOK_PATH
    return base_context

context = get_current_notebook_context()
print(context)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:36:01