TupleWindow Start/End Apache Storm 中的时间

TupleWindow Start/End Time in Apache Storm

我一直在开发一个基于 Apache Storm 中的 CDR(呼叫详细记录)数据的分析应用程序。应用程序的主要目的是在指定时间块(在每个 window 中)提取呼叫者 TotalCallCountTotalCallDuration。对于分析,我想使用 SlidingWindow 技术。

要理解可以看下图 SlidingWindow Image

为了分析,我需要知道何时 TupleWindow 开始和结束。我的意思是什么是 TupleWindow 的时间戳或 SlidingWindow 的开始和结束时间戳。

即使我查找了 Storm 的实现,也找不到任何相关信息。你能帮我看看怎么解决吗?

非常感谢

如果您使用的是 1.x 版本的 apache Storm,则无法通过 TupleWindow 直接访问此信息。您将不得不手动计算。例如。

public class MyBolt extends BaseWindowedBolt {
  ...
  long slidingInterval;

  @Override
  public BaseWindowedBolt withWindow(Duration windowLength, Duration slidingInterval) {
      this.slidingInterval = slidingInterval.value;
      return super.withWindow(windowLength, slidingInterval);
  }


  public void execute(TupleWindow inputWindow) {
    long now = System.currentTimeMillis();
    long windowEnd = now;
    long windowStart = now - slidingInterval;
    ...
  }

但在所有情况下都不是很直接,尤其是当您有活动时间时 windows。

在storm的最新master分支中,TupleWindow有一个getTimestamp方法,returnswindow结束时间戳,适用于基于处理和事件时间windows。这将在未来的 storm 版本(2.0 版本)中可用。它也可以向后移植并在未来的 Storm 1.x 版本中提供。