【问题标题】:How to get current window time in sliding window?如何在滑动窗口中获取当前窗口时间?
【发布时间】:2017-08-26 20:04:54
【问题描述】:

我正在通过风暴实现使用滑动窗口:

From Here

这是我的拓扑:

 public static void main(String[] args) throws Exception {
    TopologyBuilder builder = new TopologyBuilder();

    builder.setSpout("rabbitSpout", new RabbitMQSpout());
    builder.setBolt("filterBolt", new FilteringBolt()).shuffleGrouping("rabbitSpout");

    builder.setBolt("HourStatisticsBolt", new SlidingWindowStatisticsBolt()
            .withWindow(new BaseWindowedBolt.Duration(60, TimeUnit.MINUTES),
                    new BaseWindowedBolt.Duration(10, TimeUnit.SECONDS))
            .withTimestampField("timestamp")).shuffleGrouping("filterBolt");

在我的 SlidingWindowStatisticsBolt 的执行方法中,我想获取窗口开始或结束的时间戳。在我的螺栓中,如何获得窗口长度和滑动持续时间?

【问题讨论】:

    标签: java real-time apache-storm sliding-window


    【解决方案1】:

    由于您使用的是事件时间 (withTimestampField),因此窗口是根据周期性水印计算的。现在窗口开始/结束时间没有暴露在 TupleWindow 中。

    在 Storm 的最新 master 分支中,TupleWindow 有一个 getTimestamp 方法,它返回窗口结束时间戳,适用于基于处理和事件时间的窗口。这将在 Storm 的未来版本(2.0 版本)中提供。如果您希望将其向后移植并在下一个 1.x 版本中提供,您可以提交 JIRA here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      • 2011-03-03
      • 2013-01-17
      相关资源
      最近更新 更多