【问题标题】:Expired Tuples in Apache Storm Tumbling WindowApache Storm Tumbling 窗口中的过期元组
【发布时间】:2019-10-11 06:23:29
【问题描述】:

我已经实现了大小为 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")

【问题讨论】:

    标签: apache-storm


    【解决方案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 上的类控制窗口

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多