Spark Streaming是一种面向微批(micro-batch)处理的流计算引擎。Spark Streaming中有3个关于时间间隔的参数,这里做以下总结。
Duration含义
- batchDuration: 批次时间。多久一个批次。
- windowDuration: 窗口时间。要统计多长时间内的数据。必须是batchDuration整数倍。
- slideDuration: 滑动时间。窗口多久滑动一次。必须是batchDuration整数倍。
举例:
需求1: 实时统计5分钟内的同时在线人数。
窗口时间:5分钟。滑动时间:5分钟
需求2: 每隔30秒,统计最近1分钟的人均观看时长。
窗口时间:1分钟。滑动时间:30秒。
需求3: 每隔10分钟,统计历史以来充值人数。
窗口时间:历史以来。滑动时间:10分钟。
Duration与DStream中RDD数量关系
-
一个DStream中有且仅有一个RDD。不论是普通DStream还是窗口DStream。
-
所有DStream都可以看做是WindowedDStream。当只设置了batchDuration,可理解为batchDuration=windowDuration=slideDuration。
-
DStream.foreachRDD遍历的是间隔slideDuration时间生成的那个RDD。该RDD包含的是windowDuration中的数据。
举例
情况1: slideDuration等于windowDuration
基于时间的翻滚窗口(Tumbling Window),无重叠。
情况2: slideDuration小于windowDuration
基于时间的滑动窗口(Sliding Window),有重叠。
情况3: slideDuration大于windowDuration
一般很少使用。