【问题标题】:How to execute a Cloud Function after Dataflow job has succeeded?Dataflow作业成功后如何执行云函数?
【发布时间】:2021-03-08 00:24:52
【问题描述】:

我只想在 Dataflow 作业执行成功完成后触发 Cloud Function。

如果 Dataflow 作业失败,则不应触发 Cloud Function。

我正在使用 Dataflow UI 中的 Dataflow 模板(jdbc 到 BigQuery)运行 Dataflow 作业。

在作业执行后没有选项可以触发任何云功能或其他东西。此外,我无法更改模板代码。云函数的触发方式是什么?

【问题讨论】:

    标签: google-cloud-platform google-cloud-functions google-cloud-dataflow dataflow


    【解决方案1】:

    目前还没有为此构建它的功能,但我可以提出一个解决方法。

    • 转到 Cloud Logging 并转到高级过滤器(或新 UI)
    • 输入此过滤器
    resource.type="dataflow_step"
    textPayload="Worker pool stopped."
    
    • 然后创建一个接收器(操作 -> 在新 UI 中创建接收器)
    • 选择 PubSub 作为接收器目标(为此创建一个新主题)
    • 保存
    • 然后将主题链接到您的 Cloud Functions(通过推送订阅到 HTTP 触发的 Cloud Functions,或使用主题触发的 Cloud Functions。

    像这样,每次数据流作业结束时,都会向 PubSub 发布一条新消息,并触发您的 Cloud Function。

    【讨论】:

    • 感谢@guillaume blaquiere,它工作正常。数据流没有为此提供任何内置功能吗?
    • No Dataflow 不会为此生成事件。但是一个名为EventArc 的新功能非常有前途。并非所有云事件源都包含在其中,但我认为这是未来,您将拥有这种事件。注意:在后台,eventarc 封装了与本文所述相同的流程
    • 此解决方案不区分成功和失败的作业,因为我们得到“工作器池已停止”。两者中的消息。是否有特定于成功工作的过滤器?
    • IMO,我的解决方案已过时。更喜欢带有全新连接器的 Google Workflow,包括 Dataflow Connector,从而很好地协调您的不同步骤
    【解决方案2】:

    我以前也做过类似的事情。

    https://beam.apache.org/releases/javadoc/2.5.0/org/apache/beam/sdk/PipelineResult.html

    PipelineResult result = pipeline.run();
    State s = result.waitUntilFinish();
    if (s.compareTo(State.DONE) == 0)
        return callCloudFunction();
    

    然后您可以将您的云功能设置为由 http 请求触发。 https://cloud.google.com/functions/docs/calling/http

    【讨论】:

      【解决方案3】:

      您可能会发现此 feature request 在 Dataflow 完成后触发 Cloud Function 很有用。

      可以从命令行确定Dataflow job 是失败还是成功。您可以列出作业并检查其当前状态,例如,要检查单个作业,您可以运行:

      gcloud beta dataflow jobs describe <JOB_ID>
      

      可以在 GitHub 上找到 JDBC 到 BigQuery 模板 source code。如果您需要进行任何特定更改,您可以随时创建custom template

      【讨论】:

        猜你喜欢
        • 2021-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        • 1970-01-01
        相关资源
        最近更新 更多