DStream基本工作原理
DStream是Spark Streaming提供的一种高级抽象,英文全称为Discretized Stream,中文翻译为离散流,它代表了一个持续不断的数据流。DStream可以通过输入数据源(比如从Flume、Kafka中)来创建,也可以通过对其他DStream应用高阶函数(map,flatmap)来创建。
在内部实现上,DStream由一组时间序列上连续的RDD来表示,RDD是Spark Core的核心抽象,即不可变的、分布式的数据集,DStream中的每个RDD都包含了一个时间段内的数据
对DStream应用的算子,在底层会被转换为对DStream中每个RDD的操作
底层原理为,对DStream中每个时间段的RDD都应用一遍算子操作,然后生成新的RDD,即作为新的DStream中的那个时间段的RDD
经过一系列算子操作之后,最终可以将实时计算的结果存储到相关介质中,如Redis、HBase、MySQL。
根据这个流程也可以得出Spark Streaming编程的步骤:
1.创建输入的数据流DStream
2.对DStream进行各种算子操作,得到新的DStream
3.将处理完的结果存储到存储介质中
批处理时间间隔
Spark Streaming中,数据采集是逐条进行的,而数据处理是按批进行的
Spark Streaming中会先设置好批处理的时间间隔。当达到批处理时间间隔的时候就会把采集到的数据汇总起来成为一批数据交给系统去处理