如何从 Synapse 管道触发 ADF 管道

How to Trigger ADF Pipeline from Synapse Pipelines

问题

由于内部要求,我需要 运行 一个 Synapse 管道,然后触发一个 ADF 管道。似乎没有 Microsoft 批准的执行此操作的方法。管道 运行 很少(每周或每月)并且 ADF 管道必须 运行 在 Synapse 管道之后。

选项

似乎其他答案提出了几种选择:

  1. Azure 函数。创建一个调用 ADF 管道上的 CreatePipelineRun 函数的 Azure 函数。在 Synapse 管道的末尾,插入一个调用 Azure 函数的块。
  2. 使用 REST API 和 Web Activity。使用 REST API 调用 run the ADF pipeline。在 Synapse 管道末尾插入 Web Activity 块以进行 API 调用。
  3. 表格和投票。将记录插入托管数据库中的 table,其中包含有关 Synapse 管道 运行 的数据。从 ADF 管道定期轮询以检查新记录,并在准备就绪时 运行。
  4. 存储事件。在 Synapse 运行 的末尾创建一个带时间戳的 blob 文件。使用 ADF 中的“存储事件触发器”来触发 ADF 管道。

问题

以下哪个选项最接近“已批准”选项?这些有什么明显的缺点吗?

如您所述,此问题没有“已批准”的解决方案。您提到的所有方法都有利有弊,应该有效。对我来说,选项#3 非常成功。我们在 Azure SQL 中构建了一个基于表和存储过程的队列管理器。我们使用逻辑应用程序来处理可以计划的触发器、Blob 事件或 REST 调用。这些逻辑应用程序通过存储过程在队列 table 中插入作业。该存储过程几乎可以由任何系统直接调用,因此您的 Synapse 管道可以插入一个队列作业来执行 ADF 管道。其他好处包括所有管道 运行 的日志,支持多个数据工厂(现在是 Synapse 工作区),以及我们围绕数据库进行管理和跟踪的 Web 界面。

我们还有 2 个处理队列的其他逻辑应用程序(一个状态管理器和一个执行器)。这些 运行 不断(每 1 分钟和每 3 分钟)。检查状态和创建管道 运行 的操作均作为 .NET Azure Functions 实现 [Synapse 与 ADF 需要不同的 SDK]。该系统每月 运行 数以千计的管道,有时甚至更多,跨越众多数据工厂和 Synapse 工作区。

此处的 PRO 很多,但这种断开连接的方法允许系统的各个方面独立运行。而且它很灵活,因为您几乎可以将任何系统绑定到队列中。您的管道示例需要在不同系统中执行另一个管道是一个完美的例子。

这里的缺点是这是最复杂的方法。如果这是您要解决的开关问题,请选择其他选项之一。