要开发Spark Streaming应用程序,核心是通过StreamingContext创建DStream。因此DStream对象就是Spark Streaming中最核心的对象。DStream的全称是Discretized Stream,翻译成中文是离散流。它是Spark Streaming对流式数据的基本数据抽象,或者说是Spark Streaming的数据模型。DStream的核心是通过时间的采用间隔将连续的数据流转换成是一系列不连续的RDD,在由Transformation进行转换,从而达到处理流式数据的目的。因此从表现形式上看,DStream是由一系列连续的RDD组成,因此DStream也就具备了RDD的特性。
视频讲解如下:
以上面开发的MyNetworkWordCount程序为例,StreamingContext将每个3秒采样一次流式数据生成对应的RDD,其生成RDD的过程如下图所示。
通过上图中可以看出DStream的表现形式其实就是RDD,因此操作DStream和操作RDD的本质其实是一样的。由于DStream是由一系列离散的RDD组成,因此Spark Streaming的其实是一个小批的处理模型,本质上依然还是一个批处理的离线计算。