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

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

我正在使用 Storm 实现的滑动窗口:

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 的执行方法中,我想获取窗口开始或结束的时间戳。在我的 bolt 中,如何获得窗口长度和滑动持续时间?

最佳答案

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

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

关于java - 如何在滑动窗口中获取当前窗口时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43159507/

相关文章:

java - 一个经典的 StackOverflow : Java Swing

design-patterns - 大脑无法理解设计实时应用程序的设计模式

WSO2 CEP Siddhi 窗口和表连接不适用于 Apache Storm

java - 向新 Activity 发送文本

java - 向组件 Vaadin 添加属性

java - 如何计算天数复利?

node.js - 如何将 Node.js 集成到 kohanaPHP 应用程序中以获取实时状态更新通知

java - 目前在 Java 中可以实现的最低 TCP 延迟是多少?

scala - 以编程方式从 Storm Bolt 杀死拓扑时出现编译错误 : object and package with same name

apache-storm - Storm - 主管在重启时崩溃