Logic Apps触发Databricks笔记本后,如何实现返回响应?已用自定义连接器
问题解决方案
一、让Databricks向Logic Apps返回笔记本打印的返回值
利用作业输出存储读取结果
在Databricks笔记本里,把需要返回的内容写入DBFS或云存储(比如Azure Blob Storage)的指定位置,后续在Logic Apps里通过存储连接器或Databricks API读取该内容。
笔记本示例代码:# 生成需要返回的结果 return_result = "这里是笔记本执行后的返回内容" # 写入DBFS指定路径 dbutils.fs.put("/tmp/notebook_result.txt", return_result, overwrite=True)Logic Apps中可添加「Azure Blob存储」的「获取Blob内容」动作,或调用Databricks的
dbfs/read接口读取文件内容。通过Databricks API轮询作业输出
用Logic Apps的HTTP动作调用jobs/run-now接口启动笔记本作业,拿到返回的run_id后,循环调用jobs/get-run-output接口轮询作业状态,直到作业完成后提取输出内容。注意如果要通过这个接口获取自定义返回值,需要在笔记本里用dbutils.notebook.exit("自定义返回内容")来输出结果,接口会返回该内容。配置Databricks作业Webhook主动推送
在Databricks作业配置中添加Webhook,设置Logic Apps的HTTP触发端点作为接收地址。当作业执行完成时,Webhook会主动将作业输出(含笔记本返回内容)推送到Logic Apps,无需主动轮询。
二、无需自定义连接器的替代方案
直接用Logic Apps的HTTP动作调用Databricks REST API即可启动笔记本,步骤如下:
- 添加「HTTP」动作,请求方法设为POST,URL填Databricks的
jobs/run-now接口地址(格式:https://<你的Databricks工作区域名>/api/2.0/jobs/run-now)。 - 请求头里添加
Authorization,值为Bearer <你的Databricks个人访问令牌>,同时设置Content-Type为application/json。 - 请求体传入作业ID和参数(如果是通过作业运行笔记本),示例:
若要直接运行未关联作业的笔记本,可使用{ "job_id": 123, "notebook_params": { "input_param": "test_value" } }notebooks/run接口,请求体中指定笔记本路径、集群ID等参数。
内容的提问来源于stack exchange,提问作者user30045249
相关产品推荐
相关产品推荐

