spark streaming三种应用场景

Spark Streaming共有三种运用场景,分为:无状态操作、状态操作、window操作。下面分别描述下本人对这三种运用场景的理解。

1、无状态操作

         只关注当前新生成的小批次数据,所有计算都只是基于这个批次的数据进行处理。

         一个批次的数据,我们将这个批次的时间假设得长一些,比如说一天。这样的话,一个批次就是在一天时间内生成的数据,可以理解为银行系统中贷款发放流水表这种流水表中的1天内所产成的流水数据,所有数据基于这一天的数据进行处理。可以统计这一天的贷款发放额、贷款发放笔数等指标。只不过这里是实时数据处理,所以批次的间隔时间非常短,可能只有几秒甚至是1秒,而不是一天,但原理是一样的。

2、状态操作

         关注多个RDD从头到尾累加起来,每个RDD中的某个值进行累加。

         除了当前新生成的小批次数据,但还需要用到以前所生成的所有的历史数据,即相当于流水表的历史数据。新生成的数据与历史数据合并成一份流水表的全量数据,“状态操作”即基于这一全量数据进行操作。可以统计出银行总的贷款发放笔数,总的贷款发放额。

3、window操作

Spark Streaming也支持窗口计算,它允许你在一个滑动窗口数据上应用transformation算子。

如下图所示:

spark streaming三种应用场景_第1张图片

    

上图中,红色实线表示窗口当前的滑动位置,虚线表示前一次窗口位置,窗口每滑动一次,落在该窗口中的RDD被一起同时处理,生成一个窗口DStream(windowed DStream),窗口操作需要设置两个参数:

(1)窗口长度(window length),即窗口的持续时间,上图中的窗口长度为3

(2)滑动间隔(sliding interval),窗口操作执行的时间间隔,上图中的滑动间隔为2

这两个参数必须是原始DStream 批处理间隔(batch interval)的整数倍(上图中的原始DStream的batch interval为1)

你可能感兴趣的:(spark)