【问题标题】:How to use a output of a Databricks activity in future activity inside ADF?如何在 ADF 内的未来活动中使用 Databricks 活动的输出?
【发布时间】:2021-07-28 09:54:39
【问题描述】:

我在 ADF 中有一个 Databricks 活动,我使用以下代码传递输出:

 dbutils.notebook.exit(message_json)

现在,我想将此输出用于下一个 Databrick 活动。

作为我的搜索,我认为将最后一个输出添加到第二个活动的基本参数中。我说的对吗?

还有其他问题,如何在 Databrick 笔记本中使用此输出?

已编辑:输出为 JSON,如下图所示。

【问题讨论】:

  • 这里的输出到底是什么意思?
  • @AliHasan 我在问题末尾添加了。输出是 JSON,如上面的屏幕截图所示。我想在过滤器笔记本中加载这个 JSON。
  • 您可以在 databricks 中执行此操作,如果可能,将文件保存在临时表中或 dbfs 中,然后在下一个 databricks 笔记本中再次读取文件。因为您也打算在 databricks 笔记本中使用它。
  • @AliHasan 我正在寻找使用上次活动输出的解决方案。

标签: azure-data-factory azure-databricks


【解决方案1】:

根据doc,您可以使用@{activity('databricks notebook activity name').output.runOutput}等表达式来消费数据工厂中Databrick Notebook活动的输出。

如果您传递 JSON 对象,您可以通过附加属性名称来检索值。

例如:@{activity('databricks notebook activity name').output.runOutput.PropertyName}

我重现了这个问题,它工作正常。

以下是示例笔记本。

import json
dates = ['2017-12-11', '2017-12-10', '2017-12-09', '2017-12-08', '2017-12-07']
return_json = json.dumps(dates)
dbutils.notebook.exit(return_json)

这是 Notebook2 Activity Seeting 的样子:

管道运行成功。

【讨论】:

  • 感谢您的回复,看起来很棒。除了我的问题,我怎样才能将此输出消耗到 notebook2?你能分享示例代码吗?例如在 notebook2 中,如果 date == '2017-12-10' 打印是。
  • 您可以在 ADF 中使用If Condition 活动,并且基于 True/False 可以触发另一个活动以在管道中进行进一步处理。参考docs.microsoft.com/en-us/azure/data-factory/…
  • 谢谢,我的意思是在 notebook2 的正文中使用 notebook1 的输出。 If Condition 是一个示例操作。我试图澄清我的要求。
  • 我的意思是如何在 notebook2 的正文中使用return_json
  • 无法理解确切的要求。你想在notebook2中写return_json吗?还是想迭代 json 对象?还是别的什么?
猜你喜欢
  • 1970-01-01
  • 2021-10-16
  • 2017-04-21
  • 2021-10-07
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
相关资源
最近更新 更多