Databricks跨工作流:如何将Job1中NotebookA的参数传给Job2的NotebookB
解决Databricks跨工作流任务参数传递问题
要实现Job2中NotebookB获取Job1内NotebookA设置的key1参数,核心是让Job1把内部的任务值暴露为Job输出,再由Job2读取该输出并传递给NotebookB,具体步骤如下:
步骤1:修改Job1,导出NotebookA的参数为Job输出
Databricks的taskValues仅在同一工作流内可见,所以需要在Job1的收尾环节把NotebookA设置的key1值作为Job的输出返回:
- 如果Job1只有TaskA(NotebookA)一个任务,直接在NotebookA的末尾添加以下代码:
import json # 获取当前任务设置的key1值 key1_value = dbutils.jobs.taskValues.get(taskKey="TaskA", key="key1") # 将值以JSON格式作为Job输出返回 dbutils.notebook.exit(json.dumps({"key1": key1_value}))
- 如果Job1包含多个任务,新增一个收尾任务(如TaskFinal,依赖TaskA),在该任务中执行上述代码,确保能获取到TaskA的
key1值并输出。
步骤2:在Job2中配置参数传递
在Job2的配置里,将NotebookB的输入参数与Job1的输出关联:
- 找到Job2中对应Job1的Run_Job类型任务(任务名为Job1)。
- 配置NotebookB的输入参数时,将
key1参数的值设置为:
{{fromJson(tasks.Job1.runOutput).key1}}
这个表达式会解析Job1返回的JSON输出,提取出key1的值并传递给NotebookB。
注意事项
- 确保Job1返回的输出是合法的JSON字符串,否则
fromJson函数会解析失败。 - 验证Job1的输出是否正确:手动运行Job1后,在Job运行详情的"输出"标签页查看返回内容。
- 保证Job2中NotebookB的依赖关系正确,必须在Job1执行完成后再启动。
内容的提问来源于stack exchange,提问作者user3071308
相关产品推荐
相关产品推荐

