Apache Storm Tumbling窗口中已过期的元组

时间:2019-10-11 06:23:29

标签: apache-storm

我实现了一个大小为100的翻转窗口(基于计数)。运行拓扑时,我看到新的元组(inputWindow.get)的数目和过期的元组(inputWindow.getExpired)的数目均为100。我将消息时间设置为600秒以上。有了这个超时,我预计没有元组会过期。元组过期的原因可能是什么? 我将螺栓设置为 bolt.withTumblingWindow(Count.of(100)) 螺栓的parallelism_hint为120

builder.setBolt(“ bolt”,bolt.withTumblingWindow(Count.of(100)),120).shuffleGrouping(“ spout”)

1 个答案:

答案 0 :(得分:1)

我认为也许您误解了过期的元组是什么。称它们为“已删除元组”可能会更友好。

它们是已从当前窗口逐出但在最后一个窗口中存在的元组。它们不是消息超时已过期的元组,尽管在这种意义上当然它们也已过期。

因此,假设您收到200个元组。您的第一个窗口将是元组0-99,没有过期的元组。您的第二个窗口将是元组100-199,其中元组0-99已过期。

之所以有用的原因是在滑动窗口的情况下,这些窗口不相交。在这种情况下,您可能会得到窗口是0-99,然后是50-149,然后是99-199。如果您被告知“元组0-49不再在窗口中”,而不必自己计算,那将很有帮助。

有关更多信息,请查看https://github.com/apache/storm/blob/925422a5b5ad1c3329a2c2b44db460ae94f70806/storm-client/src/jvm/org/apache/storm/windowing/WindowManager.java

上的类控制窗口