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

Data Factory调用Databricks Workflow时如何获取笔记本返回输出?

解决ADF调用Databricks Workflow时无法获取笔记本输出的问题

问题原因

你遇到的报错是因为Databricks Workflow(Job)的runOutput默认不会自动继承笔记本通过dbutils.notebook.exit()返回的值。直接调用笔记本时,ADF能读取到笔记本的runOutput,但通过Job调用时,Job本身的runOutput默认是空的,需要手动配置将笔记本的输出传递给Job的runOutput。

解决方案

按以下步骤配置Databricks Job和ADF管道:

  1. 配置Databricks Job捕获笔记本输出

    • 打开你的Databricks Job,进入任务配置页面
    • 找到对应笔记本任务的**「任务输出」**区域,添加一个输出变量(比如命名为notebook_return_value),变量值填写:
      {{task_values.<你的笔记本任务名称>.run_output}}
      
      注意替换<你的笔记本任务名称>为实际的任务名称(比如你Job里的笔记本任务叫ProcessData,就写{{task_values.ProcessData.run_output}})
  2. 设置Job的全局运行输出

    • 进入Job的**「高级」**设置页面
    • 找到**「运行输出」**选项,填写表达式:
      {{tasks.<你的笔记本任务名称>.outputs.notebook_return_value}}
      
      同样替换任务名称,这样Job的全局runOutput就会被设置为笔记本返回的值
  3. 在ADF中正确读取输出

    • 保持ADF管道中调用Databricks Job的活动不变,修改读取输出的表达式为:
      @activity('调用Databricks Job的活动名称').output.runOutput
      
      如果笔记本返回的是JSON字符串,还可以用json()函数解析:
      @json(activity('调用Databricks Job的活动名称').output.runOutput)
      

额外注意事项

  • 如果你的Workflow是多任务流水线,确保只捕获目标笔记本任务的输出,避免混淆不同任务的返回值
  • dbutils.notebook.exit()只能返回字符串类型,若要传递复杂数据(如字典、列表),需先序列化为JSON字符串,比如:
    import json
    output_data = {"status": "success", "count": 100}
    dbutils.notebook.exit(json.dumps(output_data))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:23:13