什么是窗口计算?
Spark Streaming 提供了窗口计算,它允许在数据的滑动窗口上应用转换。
下图演示了这个滑动窗口。
如图所示,每当窗口在源 DStream 上滑动时,位于窗口内的源 RDDs 就会被合并并操作,以生成窗口化的 DStream 的 RDDs。在本例中,操作应用于数据的最后 3 个时间单位,幻灯片应用于 2 个时间单位。这表明任何窗口操作都需要指定两个参数。
–窗口长度—窗口的持续时间(图中为 3)。
–滑动间隔—窗口操作执行的间隔(图中为 2)。
这两个参数必须是源 DStream 的批处理间隔的倍数(图中为 1)。
例如,希望通过每 10 秒在最后 20 秒的数据中生成单词计数来扩展前面的示
例。为此,必须在最后 20 秒的数据中对(word, 1)的 DStream 应用 reduceByKey
操作,可以使用 reduceByKeyAndWindow 操作完成。
代码编写
import org.apache.spark.SparkConf
import org.apache.spark.streaming.{
Seconds, StreamingContext}
import org.apache.spark.streaming