不好的perf窗,上面有滑动窗口



我使用此代码执行我的测试(FLINK快速启动):

 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的输入/秒

如果我更改

timeWindow(Time.minute(15))

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

我的输入少于2500

有什么方法可以在滑动窗口中具有更好的性能?

带有15分钟的翻滚窗口,每个传入事件都分配给一个窗口,而带有一个15分钟的滑动窗口,带有一个秒的幻灯片,每个传入的事件都会复制到15* 60 = 900个窗口。这显然具有性能。

根据您的应用程序要求,您可以通过使用ProcessFunction或通过实现自定义窗口逻辑来计算更少的开销所需的内容。例如,您可以将聚集成900个窗口,然后具有第二层的窗口,通过减去秒数的贡献来逐步调整15分钟的结果,并增加了最近的第二个价值。

相关内容

  • 没有找到相关文章

最新更新