apache storm中的tuplewindow开始/结束时间

vdgimpew  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(311)

我在apachestorm中开发了一个基于cdr(calldetailrecord)数据的profilling应用程序。应用程序的主要目的是在指定的时间段(在每个窗口中)提取调用方totalcallcount和totalcallduration。为了利润,我想使用滑动窗口技术。
要理解你可以看下面的图片滑动窗口图片
为了牟利,我需要知道tuplewindow的开始和结束时间。我的意思是tuplewindow的时间戳,或者滑动窗口的开始和结束的时间戳。
即使我查了一下storm的实现,我也找不到任何关于它的信息。你能帮我弄明白吗?
非常感谢你

x33g5p2x

x33g5p2x1#

如果您使用的是ApacheStorm的1.x版本,则无法通过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;
    ...
  }

但这并不是在所有情况下都很直接,尤其是在有事件时间窗口的情况下。
在风暴最新的主分支中,tuplewindow有一个 getTimestamp 方法,该方法返回窗口结束时间戳,并适用于基于处理和事件时间的窗口。这将在storm的未来版本(2.0版本)中提供。它可以后端口,并在未来的storm 1.x版本中提供。

相关问题