如何在滑动窗口中获取当前窗口时间?

问题描述:

我使用的风暴实现滑动窗口:如何在滑动窗口中获取当前窗口时间?

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的execute方法我想获得在该窗口开始时间戳或结束。在我的螺栓我怎么能得到窗户的长度和滑动时间?

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

在风暴的最新主分支中,TupleWindow有一个getTimestamp方法,该方法返回窗口结束时间戳并适用于基于处理和事件时间的窗口。这将在未来风暴版本(2.0版本)中可用。如果您希望在未来的1.x版本中支持此功能,您可以提交JIRA here