【问题标题】:Rerunning a failed ADF pipeline automatically自动重新运行失败的 ADF 管道
【发布时间】:2021-10-06 12:12:44
【问题描述】:

我在 Azure 数据工厂中有多个管道,它们从 API 获取数据,然后将其推送到数据湖。如果其中一个管道发生故障,我会收到警报。然后我转到 ADF 实例并手动重新运行失败的管道。我正在尝试提出一种自动重新运行管道的方法,以防它失败。任何建议或指导都会有所帮助。想到了 Azure 逻辑应用程序或 powerautomate,但结果发现其中没有正确的操作来触发失败的管道。

【问题讨论】:

  • 所以您想重新运行失败的管道?为什么你不能从一开始就触发主管道?在stackoverflow.com/questions/59625210/… 处查看可能的 ADF 解决方案。请注意不要陷入循环。

标签: azure azure-data-factory-2


【解决方案1】:

如果可以修改管道设计,那么可以采用一种方法

  1. 设置参数pMax_rerun_count(这是为了确保管道不会进入无限循环)
  2. 设置 2 个变量: (2.a) Pipeline_status 默认值:失败 (2.b) Max_loop_count 默认值:0;这是为了确保管道不会循环运行。可以在管道运行期间设置该值,以在管道中作为参数传递最大允许重试计数(即 pMax_rerun_count)
  3. 所有活动都应在内部,直到活动将具有表达式 or(equals(Pipeline_status,'Success'),equals(pMax_rerun_count,Max_loop_count)
  4. 直到活动中的第一个活动将是设置变量活动,它增加变量的值 Max_loop_count 减 1。
  5. 最终的活动 insisde 直到活动将设置变量活动,将 Pipeline_status 设置为“成功”

这里的目的是在直到块中运行所有预期的活动,直到管道中的预期活动成功完成。 pMax_rerun_count 是为了确保管道不会进入无限循环。

如果所有管道都需要在失败的情况下重新运行,则可以将此设置视为一个框架

【讨论】:

    【解决方案2】:

    到目前为止,还没有内置方法可以自动执行“从 失败的活动”,但每个活动都有一个重试选项, 你当然应该雇用。在管道中,您可以尝试任何 如果失败,则根据需要执行多次操作。

    允许触发器指向带有 Execute activity 的新管道,该管道指向当前带有复制活动的 Azure Datafactory:

    然后选择高级 -> Wait for completion 选项。 执行管道完成后,webhook 操作应包含停止 DW 的逻辑。

    【讨论】:

      【解决方案3】:

      我提供了一种运行失败管道的简化方式。我决定将 Azure 数据工厂 API 与 Azure Logic 应用程序一起使用来解决这个问题。

      我在计划的运行时间运行逻辑应用,然后使用以下 API 命令:

      GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelineruns/?api-version=2018-06-01
      

      此 API 查询为我们提供了所有管道运行。如果我们想将其过滤到失败的值,我们可以添加以下主体:

      {
        "lastUpdatedAfter": "2018-06-16T00:36:44.3345758Z",
        "lastUpdatedBefore": "2018-06-16T00:49:48.3686473Z",
        "filters": [
          {
            "operand": "status",
            "operator": "Equals",
            "values": [
              "failed"
            ]
          }
        ]
      }
      

      在获取失败的管道后,我们可以在每个失败的管道上调用以下 API,以重新运行它们:

      POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DataFactory/factories/{factoryName}/pipelines/{pipelineName}/createRun?api-version=2018-06-01
      

      可以使用脚本语言、powerautomate 工作流或 Azure Logic 应用创建此解决方案。

      【讨论】:

        猜你喜欢
        • 2022-07-01
        • 1970-01-01
        • 2020-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-18
        • 2022-07-15
        • 2021-11-14
        相关资源
        最近更新 更多