2017-09-13 70 views
1

推拉窗我用这个代码来执行我的测试(Flink Quick Start):坏逆足与弗林克

val text = env.socketTextStream("localhost", port, '\n') 

    // parse the data, group it, window it, and aggregate the counts 
    val windowCounts = text 
     .flatMap { w => w.split("\\s") } 
     .map { w => WordWithCount(w, 1) } 
     .keyBy("word") 
     .timeWindow(Time.minute(15)) 
     .sum("count") 

与此代码我有超过65 000输入/ Seconde系列

如果我改变

timeWindow(Time.minute(15)) 

通过

timeWindow(Time.minutes(15), Time.seconds(1)) 

我有少于2 500输入/ seconde

有什么办法可以有更好的性能与滑动Windows?

回答

2

使用15分钟的滚动窗口,每个传入事件被分配到一个窗口,而带有一秒滑动的15分钟滑动窗口,每个传入事件被复制到15 * 60 = 900窗口。这显然会对性能产生影响。

根据您的应用需求,您可以通过使用ProcessFunction或实现自定义窗口逻辑,以较少的开销计算所需的内容。例如,您可以预先聚合到900秒的窗口中,然后有第二层窗口,通过减去即将到期的第二个对总数的贡献来递增调整15分钟结果,并添加最近一秒的值。