数据工厂中的 Databricks 工作流输出

问题描述 投票:0回答:1

我看过很多文章解释如何从数据工厂中的databricks笔记本返回输出。是否可以通过工作流程来完成此操作?

我是 Databricks 新手,但我正在从事的项目从 ADF 调用一系列 Databricks 笔记本,每个调用都是通过 databricks 工作流程完成的,因此永远不会直接调用笔记本。

本质上,这就是现在正在发生的事情 -

  1. 管道调用工作流并等待
  2. 工作流程触发笔记本
  3. 笔记本代码执行(python),使用此代码返回一个值 - dbutils.notebook.exit('test')
  4. Pipeline 尝试获取输出并失败并出现此错误 - “无法评估,因为属性 'runOutput' 不存在”
azure-data-factory databricks
1个回答
0
投票

这是可能的,但由于有多个任务,解决方案有点复杂。 过程应该如下:

  1. 管道调用工作流并等待
  2. 工作流程触发笔记本
  3. 笔记本代码执行(python),使用此代码返回一个值 - dbutils.notebook.exit('test')
  4. 工作流可能有另一个任务触发同一个或另一个笔记本
  5. Notebook 2 代码执行(python),使用此代码返回一个值 - dbutils.notebook.exit('test2')
  6. Pipeline 使用 jobs/runs/get API 调用获取结果。这将包含一个名为“tasks”的数组,其中有多个唯一的 run_id,每个任务 1 个。
  7. Pipeline 需要循环遍历每个任务 runid 以获取各个输出。您可以使用 jobs/runs/get-output 并将 run_id 作为参数。 run_id 应该是任务的,而不是作业本身。
© www.soinside.com 2019 - 2024. All rights reserved.