【问题标题】:Drain DataFlow job and start another one right after, cause to message duplication排空 DataFlow 作业并立即启动另一个作业,导致消息重复
【发布时间】:2019-04-04 20:31:08
【问题描述】:

我有一个数据流作业,它订阅了来自 PubSub 的消息:

p.apply("pubsub-topic-read", PubsubIO.readMessagesWithAttributes()


.fromSubscription(options.getPubSubSubscriptionName()).withIdAttribute("uuid"))

我在文档中看到不能保证不重复,Beam 建议使用withIdAttribute。

这非常有效,直到我耗尽现有作业,等待它完成并重新启动另一个作业,然后我看到数百万个重复的 BigQuery 记录(我的作业将 PubSub 消息写入 BigQuery)。

知道我做错了什么吗?

【问题讨论】:

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


    【解决方案1】:

    我认为您应该使用 update feature 而不是使用 drain 来停止管道并启动新管道。在后一种方法中,两个管道之间不共享状态,因此 Dataflow 无法识别已从 PubSub 传递的消息。使用更新功能,您应该能够在没有重复消息的情况下继续您的管道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 2012-08-19
      • 2018-01-03
      • 2019-10-29
      • 2018-03-07
      • 1970-01-01
      相关资源
      最近更新 更多