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

Databricks Notebook替代Livy sessions端点及API执行代码相关咨询

问题1:是否可通过Databricks API执行Databricks Notebook内的代码,并将代码输出结果作为响应返回?

可以实现。你可以通过Databricks Jobs API v2.1完成该操作:

  • 调用/api/2.1/jobs/runs/submit端点提交Notebook运行任务,支持指定预先存储的Notebook路径、运行集群、参数等配置
  • 任务运行完成后调用/api/2.1/jobs/runs/get-output端点,即可获取到Notebook所有单元格的执行输出、返回值、错误栈等完整信息,可直接作为响应返回给调用方
    如果需要执行动态传入的代码而非固定Notebook内容,也可以配合Repos API临时更新Notebook内容后再提交运行,效果完全一致。

问题2:可行的workaround方案

根据你的使用场景可以选择两种方案:

方案1:固定Notebook执行场景(推荐)

适合需要反复运行已开发完成的Notebook的场景:

  1. 提前将需要运行的Notebook上传到Databricks工作区或绑定的Git仓库中
  2. 提交运行请求,示例请求如下:
curl -X POST -n \
  https://<你的Databricks实例域名>/api/2.1/jobs/runs/submit \
  -d '{
    "run_name": "notebook-run-demo",
    "tasks": [
      {
        "task_key": "demo-task",
        "existing_cluster_id": "<你的预启动交互式集群ID>",
        "notebook_task": {
          "notebook_path": "<Notebook在工作区的路径,比如/Repos/xxx@xxx.com/repo-name/notebook-name>",
          "base_parameters": {"输入参数名": "参数值"}
        }
      }
    ]
  }'
  1. 拿到响应返回的run_id后轮询/api/2.1/jobs/runs/get接口,直到任务状态变为TERMINATED
  2. 调用/api/2.1/jobs/runs/get-output接口,提取notebook_output字段即可获得执行结果
    如果不需要复用集群,也可以把existing_cluster_id替换为new_cluster配置,每次运行自动创建集群、运行完成后自动销毁。

方案2:动态代码片段执行场景

适合需要类似Livy那样动态提交任意代码的场景:

  • 可以将需要执行的代码作为参数传入一个通用的执行Notebook,由Notebook接收参数后动态执行代码再返回结果
  • 也可以直接提交spark_python_task/spark_scala_task/spark_sql_task类型的作业,直接指定要执行的代码内容,不需要提前准备Notebook文件,执行完成后同样可以通过get-output接口拿到结果。

问题3:上述需求是否可通过Databricks SQL API实现

仅纯SQL执行场景可以实现:

  • 如果你要执行的所有逻辑都是SQL语句,可以调用Databricks SQL API的/api/2.0/sql/statements端点提交SQL任务,接口支持同步或异步执行,执行完成后会直接返回结构化的查询结果,无需维护Notebook文件,调用流程更简单。
  • 如果你需要执行Python、Scala、R等非SQL的Spark代码,Databricks SQL API不支持该类场景,只能使用前述Jobs API方案实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:27:03