一、滑动窗口转换操作
1.1 概述
事先规定一个滑动窗口的长度,设定滑动窗口的时间间隔,让窗口每隔一段时间就在数据流上移动,每次窗口停在的位置,都会框住一小部分数据,形成一小段DStream,启动计算操作对这一小段DStream进行计算。
1.2 相关操作
1.2.1 countByValueAndWindow(窗口长度,时间间隔,[numTasks]):应用到一个由键值对组成的DStream上,统计key在每个滑动窗口中出现的频率
1.2.2 reduceByKeyAndWindow(func,窗口长度,时间间隔,[numTasks]):应用到一个由键值对组成的DStream上,将key按照func函数进行聚合返回一个新的键值对DStream
1.2.3 reduceByKeyAndWindow(func,invFunc,窗口长度,时间间隔,[numTasks]):对进入当前滑动窗口的值进行reduce操作,对离开窗口的老数据进行逆向reduce操作。这样做的原因是:两个时刻间,滑动窗口中可能包含相同的数据,按照1.2.2的方法,需要对当前滑动窗口中的所有数据进行重新计算,而1.2.3的方法是将离开窗口的函数进行逆向操作还原成原来的数据,新加入进来的数据进行按照func方法进行reduce操作,公共部分保持不变。
二、updateStateByKey操作
2.1 概述
在跨批次之间维护状态。用词频统计来说,滑动窗口转换操作统计的是单词在每个窗口出现的频率,当窗口发生移动,会忘记上一次词频统计的结果,而updateStateByKey操作会在上一次统计结果的基础上进行累加,统计单词在整个数据流中的出现频率。
2.2 参数
updateStateByKey(func,初始RDD)
三、学习视频
https://www.bilibili.com/video/BV1oE411s7h7?p=62
https://www.bilibili.com/video/BV1oE411s7h7?p=63