数据流作业成功后,如何执行云函数



只有当Dataflow作业执行成功时,我才想触发Cloud Function。

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

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

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

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

  • 转到云日志并转到高级过滤器(或新UI(
  • 输入此筛选器
resource.type="dataflow_step"
textPayload="Worker pool stopped."
  • 然后创建接收器(操作-在新UI中创建接收器(
  • 选择PubSub作为接收目标(为此创建一个新主题(
  • 保存
  • 然后将主题链接到您的云函数(可以通过推送订阅HTTP触发的云函数,也可以通过主题触发的云功能

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

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

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

当Dataflow完成时,您可能会发现触发云函数的此功能请求非常有用。

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

gcloud beta dataflow jobs describe <JOB_ID>

JDBC到BigQuery模板的源代码可以在GitHub上找到。如果需要进行任何特定的更改,您可以始终创建一个自定义模板。

最新更新