Apache Storm翻滚窗口中的过期元组

问题描述 投票:1回答:1

我已经实现了大小为100的Tumbling Window(基于计数)。运行拓扑时,我看到新的元组(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”)

apache-storm
1个回答
0
投票

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

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

因此,假设您收到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处的类控制窗口

© www.soinside.com 2019 - 2024. All rights reserved.