![](/img/trans.png)
[英]Dataflow Template/Pattern in enriching fixed BigQuery data by streaming Pubsub data
[英]Messages stuck in GBP when streaming from multiple PubSub topics to BigQuery using DataFlow?
我有一个包含以下部分的Java DataFlow管道:
如果要连接的订阅列表中有多个PubSub-topic,则所有元素都将卡在BigQuery编写器的Reshuffle操作中的GroupByKey操作中。 发送几十条测试消息后,我已经让它运行了几个小时,但是BigQuery没有写任何东西。
我发现了以下三个变通方法(每个变通方法都与其他变通方法分开)
消息不是故意加时间戳的-仅使用PubsubMessage时间戳将它们写入BigQuery是完全可以接受的。
这也使我感到困惑,即使添加不存在的时间戳属性也似乎可以解决该问题。 我调试了该问题以打印出管道中的时间戳,并且在两种情况下它们都是可比较的; 指定不存在的时间戳记属性时,无论如何似乎都回落到pubsub时间戳记。
是什么导致此问题? 我该如何解决? 对我来说,最可接受的解决方法是删除Flatten.pCollections操作,因为它不会严格使代码复杂化,但是我无法理解失败的原因。
您是否将加窗应用于管道? Beam文档警告您使用无边界的PCollection(例如Pub / Sub),而不会出现任何窗口或触发事件:
如果您没有为无边界的PCollection设置非全局窗口函数或非默认触发器,然后使用分组转换(例如GroupByKey或Combine),则管道将在构造时生成错误,并且您的工作将失败。
在您的情况下,管道不会在构造上失败,但是消息会停留在GroupByKey中,因为它正在等待窗口结束。 尝试在BigQuery编写器之前添加一个窗口,看看是否可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.