首页 > 解决方案 > Azure 数据工厂,如何从 scala(jar 作业)获取输出?

问题描述

我们有一个 Azure 数据工厂管道,其中一个步骤是一个 jar 作业,它应该返回后续步骤中使用的输出。可以使用 dbutils.notebook.exit(....) 从笔记本获取输出 我需要类似的功能来从 jar 的主类中检索输出。谢谢!

我的管道图片

标签: azureapache-sparkazure-data-factory

解决方案


实际上,据我所知,没有直接执行 jar 作业的内置功能。但是,您可以使用 Azure Databricks 服务轻松实现它。

Azure Databricks 工作区中的两种方式:

在此处输入图像描述

如果你的 jar 是可执行的 jar,那么就使用Set JARwhich 可以设置主类和参数:

在此处输入图像描述

相反,您可以尝试使用Notebook执行dbutils.notebook.exit(....)或其他东西。

回到 ADF,ADF 有Databricks Activity,您可以获取它的输出以用于后续步骤。如有任何问题,请告诉我。


更新:

据我所知,Jar 活动中没有与dbutils.notebook.exit(....)类似的功能。到目前为止,我只是在这里提供了一个解决方法:将参数存储到特定文件中,该文件位于内部的(例如)blob 存储中jar 执行。然后在 jar 活动之后使用LookUp 活动来获取下一步的参数。


2020 年 1 月 21 日更新

在 github 链接中从 MSFT 获得了一些更新:https ://github.com/MicrosoftDocs/azure-docs/issues/46347

发送输出是一个功能,只有笔记本支持笔记本工作流,而不是数据块中的 jar 或 python 执行。这应该是要求数据块的功能,只有这样 ADF 才能支持它。

我建议您将此作为产品反馈提交到 Azure Databricks 反馈论坛。

azure databricks 似乎不支持 jar 执行的输出,ADF 自然只支持 azure databricks 的功能。好的...,您可以通过与 azure databricks 团队联系来推动相关进展。我只是在这里分享了我所有的知识。


推荐阅读