1.Spark Streaming 概述
Spark Streaming 用于流式数据的处理。Spark Streaming 支持的数据输入源很多,例如:Kafka、
Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等等。数据输入后可以用 Spark 的高度抽象原语
如:map、reduce、join、window 等进行运算。而结果也能保存在很多地方,如 HDFS,数据库等。
和 Spark 基于 RDD 的概念很相似,Spark Streaming 使用离散化流(discretized stream)作为抽
象表示,叫作 DStream。DStream 是随时间推移而收到的数据的序列。在内部,每个时间区间收
到的数据都作为 RDD 存在,而 DStream 是由这些 RDD 所组成的序列(因此得名“离散化”)。所以
简单来将,DStream
就是对 RDD
在实时数据处理场景的一种封装。
2.Spark Streaming 特点
- 易用
- 容错
- 易整合到Spark体系
3.Spark Streaming 架构
3.Word Count
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.12</artifactId>
<version>3.0.0</version>
</dependency>
scala
object Spark01 {
// 准实时, 微批次
// DStream 实际上是对RDD 的封装
// 背压机制: 如果生成数据过快, 消费数据过慢, 数据会挤压
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("Streaming")
val ssc = new StreamingContext(sparkConf, Seconds(3))
ssc.socketTextStream("localhost", 9999).flatMap(_.split(" "))
.map((_, 1))
.reduceByKey(_+_)
.print()
ssc.start()
ssc.awaitTermination()
}
}
对数据的操作也是按照 RDD 为单位来进行的
计算过程由 Spark Engine 来完成
本文含有隐藏内容,请 开通VIP 后查看