【问题标题】:Notifying Google PubSub when Dataflow job is completeDataflow 作业完成时通知 Google PubSub
【发布时间】:2016-11-26 08:32:50
【问题描述】:

有没有办法在 Google Dataflow 作业完成后将消息发布到 Google Pubsub?我们需要通知依赖系统传入数据的处理已完成。 Dataflow 将数据写入 sink 后如何发布?

编辑: 我们希望在管道完成写入 GCS 后通知。我们的管道如下所示:

Pipeline.create(选项) 。申请(....) .apply(AvroIO.Write.named("写入 GCS") .withSchema(Extract.class) .to(options.getOutputPath()) .withSuffix(".avro")); p.run();

如果我们在 pipeline.apply(...) 方法之外添加逻辑,我们会在代码完成执行时收到通知,而不是在管道完成时收到通知。理想情况下,我们可以在 AvroIO 接收器之后添加另一个 .apply(...) 并将消息发布到 PubSub。

【问题讨论】:

  • 当您的管道完成时,没有什么能阻止您向 pub/sub 主题写入消息。您不需要 Dataflow 来执行此操作。
  • 可能需要使用BlockingPipelineRunner(cloud.google.com/dataflow/pipelines/…)才能达到想要的效果。
  • 我有一个类似的用例,但我的管道以流模式运行,每隔一小时。我想在每个窗口的写入完成后向 pubsub 发布一条消息。

标签: google-cloud-dataflow google-cloud-pubsub


【解决方案1】:

您有两个选项可以在管道完成时收到通知,然后发布消息 - 或者在管道完成运行后执行任何您想做的事情:

  1. 使用BlockingPipelineRunner。这将运行您的管道synchronously。
  2. 使用DataflowPipelineRunner。这将运行您的管道asynchronously。然后,您可以轮询管道以了解其状态,并等待其完成。

【讨论】:

  • 如果流水线在流模式下使用某个窗口执行,并且我们想在窗口的写入完成后将某些内容发布到 pubsub 怎么办?
猜你喜欢
  • 2018-12-07
  • 2021-11-01
  • 2020-04-05
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-03
相关资源
最近更新 更多