我实现了一个大小为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”)
答案 0 :(得分:1)
我认为也许您误解了过期的元组是什么。称它们为“已删除元组”可能会更友好。
它们是已从当前窗口逐出但在最后一个窗口中存在的元组。它们不是消息超时已过期的元组,尽管在这种意义上当然它们也已过期。
因此,假设您收到200个元组。您的第一个窗口将是元组0-99,没有过期的元组。您的第二个窗口将是元组100-199,其中元组0-99已过期。
之所以有用的原因是在滑动窗口的情况下,这些窗口不相交。在这种情况下,您可能会得到窗口是0-99,然后是50-149,然后是99-199。如果您被告知“元组0-49不再在窗口中”,而不必自己计算,那将很有帮助。
上的类控制窗口