一、SparkStreaming 概述

1.1 SparkStreaming 是什么

​ SparkStreaming 是 Spark Core 的扩展,支持可伸缩、高吞吐量、容错的实时数据流处理。SparkStreaming 可支持很多种数据来源,如 kafka、flume 等,也可以把结果保存到很多地方,如 HDFS、数据库等。

1.2 SparkStreaming 架构及工作流程

1.2.1 架构

Spark Streaming概述

二、DStream

2.1 DStream 简介

Spark Streaming概述
​ 在 SparkStreaming 中,有一个核心概念加做 DStream(discretized stream,离散化流),它是随时间推移而受到的数据的序列,在内部,每个时间区间收到的数据都作为 RDD 而存在,而 DStream 是由这些 RDD 所组成的序列,因此得名 “离散化”。

​ 因为 SparkStreaming 处理的数据是基于时间区间的 RDD,所以它不是真正的连续,而是微型的批处理。
Spark Streaming概述

2.2 DStream 转换

2.2.1 无状态转换

​ 如上图所示,在一个 DStream 里面有多个 RDD,我们可以对每个 RDD 进行操作统计数据,每个 RDD 的计算结果对于后面的 RDD 来说是未知的,这就是无状态转换

2.2.2 有状态转换

​ 作为一个流式数据的框架,肯定不能只统计当前收到的数据,还要结合以前的数据一起来分析,所以我们要用有状态转换

2.3 窗口函数

​ DStream 在采集数据的时候有一个时间间隔,可以设置成 1s,10s 等任意间隔,设置多大的间隔以后就使用这个间隔内的数据。

​ 但我们可能还有其它需求,如 我们统计每个小时内的数据,这时候单用有状态转换是不好实现的,所以 SparkStreaming 又有了新的概念——窗口,例:如果我们想统计 1:00 到 2:00 的数据,那么就把窗口大小成 1 小时就可以统计到了。

​ 自然而然,统计完 1:00 到 2:00 的数据了,我们肯定还要统计 1:10到 2:10 分的数据,这就需要把窗口的滑动步长设置成 10 分钟。

相关文章: