首页 > 大数据 > Spark > Spark Streaming编程指南
Spark Streaming是构建在Spark Core基础之上的流处理框架,是Spark非常重要的组成部分。
Spark Streaming是构建在Spark Core的RDD基础之上的,与此同时Spark Streaming引入了一个新的概念:DStream(Discretized Stream,离散化数据流),表示连续不断的数据流。 DStream抽象是Spark Streaming的流处理模型, 在内部实现上,Spark Streaming会对输入数据按照时间间隔(如1秒)分段,每一段数据转换为Spark中的RDD,这些分段就是Dstream,并且对DStream的操作都最终转变为对相应的RDD的操作。如下图所示:
如上图,这些底层的RDD转换操作是由Spark引擎来完成的,DStream的操作屏蔽了许多底层的细节,为用户提供了比较方便使用的高级API。
在Flink中,批处理是流处理的特例,所以Flink是天然的流处理引擎。
即将流处理看作是在较小时间间隔内(batch interval)的一些列的批处理。关于时间间隔的设定,需要结合具体的业务延迟需求,可以实现秒级或者分钟级的间隔。
Spark Streaming会将每个短时间间隔内接收的数据存储在集群中,然后对其作用一系列的算子操作(map,reduce, groupBy等)。执行过程见下图:

在Spark Streaming中,会有一个组件Receiver,作为一个长期运行的task跑在一个Executor上
每个Receiver都会负责一个input DStream(比如从文件中读取数据的文件流,比如套接字流,或者从Kafka中读取的一个输入流等等)
Spark Streaming通过input DStream与外部数据源进行连接,读取相关数据
在Spark Streaming中,会有一个组件Receiver,作为一个长期运行的task跑在一个Executor上
每个Receiver都会负责一个input DStream(比如从文件中读取数据的文件流,比如套接字流,或者从Kafka中读取的一个输入流等等)
Spark Streaming通过input DStream与外部数据源进行连接,读取相关数据
1.启动StreamingContext
2.StreamingContext启动receiver,该receiver会一直运行在Executor的task中。用于连续不断地接收数据源,有两种主要的reciver,一种是可靠的reciver,当数据被接收并且存储到spark,发送回执确认,另一种是不可靠的reciver,对于数据源不发送回执确认。接收的数据会被缓存到work节点内存中,也会被复制到其他executor地所在的节点内存中,用于容错处理。
3.Streaming context周期触发job(根据batch-interval时间间隔)进行数据处理。
4.将数据输出。
1.创建
StreamingContext
2.创建输入
DStream
来定义输入源
3.通过对DStream应用转换操作和输出操作来定义处理逻辑
4.用streamingContext.start()来开始接收数据和处理流程
推荐阅读:
https://baijiahao.baidu.com/s?id=1709308163038228882&wfr=spider&for=pc
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949806/viewspace-2914333/ ,如需转载,请注明出处,否则将追究法律责任。