Apache Storm中的TupleWindow开始/结束时间
我一直在开发一个在ApacheStorm中使用CDR(呼叫详细记录)数据的profilling应用程序。应用程序的主要目的是在指定的时间段(在每个窗口中)提取调用方TotalCallCount和TotalCallDuration。对于轮廓,我想使用滑动窗口技术 要理解这一点,请看下图 对于Profiling,我需要知道TupleWindow何时开始和结束。我的意思是TupleWindow的时间戳是多少,或是SlidingWindow的开始和结束的时间戳是多少 即使我查阅了Storm的实现,我也找不到任何关于它的信息。你能帮我想一想怎么弄清楚吗Apache Storm中的TupleWindow开始/结束时间,apache,apache-storm,sliding-window,Apache,Apache Storm,Sliding Window,我一直在开发一个在ApacheStorm中使用CDR(呼叫详细记录)数据的profilling应用程序。应用程序的主要目的是在指定的时间段(在每个窗口中)提取调用方TotalCallCount和TotalCallDuration。对于轮廓,我想使用滑动窗口技术 要理解这一点,请看下图 对于Profiling,我需要知道TupleWindow何时开始和结束。我的意思是TupleWindow的时间戳是多少,或是SlidingWindow的开始和结束的时间戳是多少 即使我查阅了Storm的实现,我也
非常感谢如果您使用的是apache Storm的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;
...
}
但在所有情况下,特别是当您有事件时间窗口时,这可能不是很直接
在storm的最新主分支中,有一个getTimestamp
方法,该方法返回窗口结束时间戳,并适用于处理窗口和基于事件时间的窗口。这将在storm的未来版本(2.0版)中提供。它可以进行后端口,并在未来的Storm 1.x版本中提供