如何实现Databricks Notebook运行10分钟后自动停止?
让Databricks Notebook运行10分钟后自动停止的方法
方法一:在Notebook里嵌入Python定时器代码
直接在Notebook中添加监控逻辑,到点自动终止执行,适合单个Notebook的个性化设置:
- 示例代码(可放在Notebook最开头):
import time import threading from databricks.sdk import WorkspaceClient import os # 设置超时时间:10分钟=600秒 TIMEOUT_SECONDS = 600 def stop_notebook(): print("运行时长超10分钟,自动终止Notebook...") # 获取当前Notebook的运行ID notebook_ctx = dbutils.notebook.entry_point.getDbutils().notebook().getContext() run_id = notebook_ctx.currentRunId().get() # 初始化Workspace客户端并终止运行 w = WorkspaceClient(host=os.environ["DATABRICKS_HOST"], token=os.environ["DATABRICKS_TOKEN"]) w.jobs.cancel_run(run_id=run_id) # 启动定时器 timer = threading.Timer(TIMEOUT_SECONDS, stop_notebook) timer.start() # 这里编写你的核心业务代码 # ... # 如果业务代码提前执行完成,取消定时器 timer.cancel()
- 注意:需确保当前Notebook具备调用Jobs API的权限,部分环境中dbutils可直接获取上下文,无需手动配置令牌和主机地址,可根据实际情况调整代码。
方法二:通过Databricks作业配置超时
若将Notebook作为作业运行,直接在作业设置里配置超时更省心:
- 操作步骤:
- 打开Databricks工作区的Jobs页面,新建或编辑目标作业
- 进入任务配置的Advanced(高级)选项,找到Timeout(超时)设置
- 将超时时间设为10分钟(600秒),保存配置即可
- 这种方式无需修改Notebook代码,作业运行超时时Databricks会自动终止任务。
方法三:集群级全局超时设置(适合共享集群)
如果使用共享集群,想给所有在该集群上运行的Notebook统一设置超时,可修改集群配置:
- 操作步骤:
- 进入集群配置页面,找到Spark选项卡下的Spark config(Spark配置)
- 添加以下两行配置:
spark.databricks.driver.timeout 600s spark.databricks.executor.timeout 600s
- 注意:该设置会对集群上所有任务生效,若仅需限制单个Notebook,优先使用前两种方法。
内容的提问来源于stack exchange,提问作者bigdata techie
相关产品推荐
相关产品推荐

