SparkStreaming滑动计算窗口reduceByKeyAndWindow图解说明

对于reduceByKeyAndWindow(_ + _, _ - _,Second(45), Second(5))这种算法不太明白的同学可以参考下,下图是通过个人理解所画,希望对大家理解这个函数有所帮助:
SparkStreaming滑动计算窗口reduceByKeyAndWindow图解说明首先,说一下需求,就是每隔5秒,计算过去45秒内的X数量。
第一个窗口(第一个45s内,时间点1)里面的X数量是17个,然后时间往后移动了5秒,变成了时间点2
图中,在时间滑动后,新增了5个X(黄色图内所示),而有3个X算是“过期”的(灰色框内)。
因此,计算当前时间窗口内的X数量的公式,就变成了:
X总量 = 上一个时间窗口总量 + 新增(黄色) - “过期”(灰色)
换成数字就是:
19 = 17 + 5 - 3

这样,只要通过加减算法,每次增量计算,就可以得出当前窗口最新的值,不用每次全量计算一个window内所有的rdd,因此也更高效。