如何从 Synapse 管道触发 ADF 管道
How to Trigger ADF Pipeline from Synapse Pipelines
问题
由于内部要求,我需要 运行 一个 Synapse 管道,然后触发一个 ADF 管道。似乎没有 Microsoft 批准的执行此操作的方法。管道 运行 很少(每周或每月)并且 ADF 管道必须 运行 在 Synapse 管道之后。
选项
似乎其他答案提出了几种选择:
- Azure 函数。创建一个调用 ADF 管道上的 CreatePipelineRun 函数的 Azure 函数。在 Synapse 管道的末尾,插入一个调用 Azure 函数的块。
- 使用 REST API 和 Web Activity。使用 REST API 调用 run the ADF pipeline。在 Synapse 管道末尾插入 Web Activity 块以进行 API 调用。
- 表格和投票。将记录插入托管数据库中的 table,其中包含有关 Synapse 管道 运行 的数据。从 ADF 管道定期轮询以检查新记录,并在准备就绪时 运行。
- 存储事件。在 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 很多,但这种断开连接的方法允许系统的各个方面独立运行。而且它很灵活,因为您几乎可以将任何系统绑定到队列中。您的管道示例需要在不同系统中执行另一个管道是一个完美的例子。
这里的缺点是这是最复杂的方法。如果这是您要解决的开关问题,请选择其他选项之一。
问题
由于内部要求,我需要 运行 一个 Synapse 管道,然后触发一个 ADF 管道。似乎没有 Microsoft 批准的执行此操作的方法。管道 运行 很少(每周或每月)并且 ADF 管道必须 运行 在 Synapse 管道之后。
选项
似乎其他答案提出了几种选择:
- Azure 函数。创建一个调用 ADF 管道上的 CreatePipelineRun 函数的 Azure 函数。在 Synapse 管道的末尾,插入一个调用 Azure 函数的块。
- 使用 REST API 和 Web Activity。使用 REST API 调用 run the ADF pipeline。在 Synapse 管道末尾插入 Web Activity 块以进行 API 调用。
- 表格和投票。将记录插入托管数据库中的 table,其中包含有关 Synapse 管道 运行 的数据。从 ADF 管道定期轮询以检查新记录,并在准备就绪时 运行。
- 存储事件。在 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 很多,但这种断开连接的方法允许系统的各个方面独立运行。而且它很灵活,因为您几乎可以将任何系统绑定到队列中。您的管道示例需要在不同系统中执行另一个管道是一个完美的例子。
这里的缺点是这是最复杂的方法。如果这是您要解决的开关问题,请选择其他选项之一。