SparkStreaming 原理_问题提出 | 学习笔记

简介: 快速学习 SparkStreaming 原理_问题提出

开发者学堂课程【大数据Spark2020版(知识精讲与实战演练)第五阶段:SparkStreaming 原理_问题提出】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/692/detail/12135


SparkStreaming 原理_问题提出

内容介绍:

一、Spark Streaming 的特点

二、如何小批量

三、如何处理数据

四、Spark Streaming 是流计算,流计算的数据是无限的

五、总结

 

一、Spark Streaming 的特点

●Spark Streaming 会源源不断的处理数据,称之为流计算

●Spark Streaming 并不是实时流,而是按照时间切分小批量,一个一个的小批量处理

1. 举例来进行说明实时的流处理:每一个算子相当于河流上横亘的一个水闸,每一个元素流经水闸后会变成另外一种形态,这种就称为实时流处理,因为它会对每一条数据进行处理。

2.小批量:一条河流上有一个横亘的过滤器,但是这个过滤器并不是对于每一滴水都进行处理的,它是先收集一部分的水,这一部分的水单独进行处理,然后转成另一部分的水,这就叫做小批量,总结来说,实时流处理就是来一条处理一条,而来一批处理一批,叫做小批量英文名为 Micro bitch )

●Spark Streaming 是流计算,所以可以理解为数据会源源不断的来,需要长时间运行

 

二、如何小批量

Spark Streaming 中的编程模型叫做 DStream ,所有的 API 都从 DStream 开始,其作用就类似于 RDD 之于 Spark Core

val lines:Dstream[String]=ssc.socketTextStream(

hostname = args(0) ,

port =args(1).toInt,

storageLevel = storageLevel..MENORY_AND_DISK_SER)

val words :[ DStream[string= lines.flatMap(_.split( regex m " "))

val wordCounts: [Dstream[ (String,Int)j= words.map(x =>(x,1)) .reduceByKey(_+ _)

可以理解为 DStream 是一个管道,数据源源不断的从这个管道进去,被处理,再出去。 Dstream 作为一个管道,将会对每一个流经其内部的数据进行处理。

image.png

但是需要注意的是, DStream 并不是严格意义上的实时流,事实上, DStream 并不处理数据,而是处理 RDD。DStream 将会收集一定时间内的 person 对象生成 RDD,然后针对 RDD 进行处理,每一个 RDD 称为一个批次。

image.png

以上,可以整理出如下道理

●Spark Streaming 是小批量处理数据,并不是实时流

●Spark Streaming 对数据的处理是按照时间切分为一个又一个小的 RDD ,然后针对 RDD 进行处理所以针对以上的解读,可能会产生—种疑惑:如何切分 RDD?

 

三、如何处理数据

如下代码

val lines : DStream[String] = ssc.socketTextStream(

hostname = args (0) ,

port = args ( 1).toInt,

storageLevel = StorageLevel. MEMORY_AND_DISK_SER)

val words : DStream[ String] = lines

.flatMap (_.split(""))

RDD 中的 flatmap 与 Spark Streaming 的 flatmap 里面所传的参数都是一样的。

.map ( x =>(x,1))

.reduceByKey(_ + _)

猜测

1.DStream 中其实流动的是 RDD

2.DStream 在调用算子的时候可以猜测为算子最终将作用于 RDD ?

可以看到

●RDD 中针对数据的处理是使用算子,在 DStream 中针对数据的操作也是算子

●DStream 的算子似乎和 RDD 没什么区别

有一个疑惑

●难道 DStream 会把算子的操作交给 RDD 去处理?如何交?

 

四、Spark Streaming 是流计算,流计算的数据是无限的

因为不好去判断这个系统什么时候会流,什么时候会停,所以可以认为这个系统中的数据是源源不断产生的,所以 spark streaming 会一直运行。

image.png

无限的数据一般指的是数据不断的产生,比如说运行中的系统,无法判定什么时候公司会倒闭,所以也无法断定数据什么时候会不再产生数据

那就会产生一个问题

如何不简单的读取数据,如何应对数据量时大时小?

如何数据是无限的,意味着可能要一直运行下去

那就会又产生—个问题

Spark Streaming 不会出错吗?数据出错了怎么办?

 

五、总结

总结下来,有四个问题

●Dstream 如何对应 RDD?

●如何切 RDD ?

●如何读取数据?

●如何容错?

相关文章
|
5月前
|
分布式计算 Spark 大数据
深入探究Apache Spark在大数据处理中的实践应用
【6月更文挑战第2天】Apache Spark是流行的开源大数据处理框架,以其内存计算速度和低延迟脱颖而出。本文涵盖Spark概述、核心组件(包括Spark Core、SQL、Streaming和MLlib)及其在数据预处理、批处理分析、交互式查询、实时处理和机器学习中的应用。通过理解Spark内部机制和实践应用,可提升大数据处理效率,发挥其在各行业的潜力。
|
6月前
|
分布式计算 监控 Hadoop
Hadoop【基础知识 02】【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
【4月更文挑战第3天】Hadoop【基础知识 02】【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
278 0
|
6月前
|
存储 消息中间件 分布式计算
Apache Hudi典型应用场景知多少?
Apache Hudi典型应用场景知多少?
100 0
|
6月前
|
消息中间件 存储 关系型数据库
探究Kafka原理-6.CAP理论实践(上)
探究Kafka原理-6.CAP理论实践
107 0
|
6月前
|
消息中间件 安全 Kafka
探究Kafka原理-6.CAP理论实践(下)
探究Kafka原理-6.CAP理论实践
83 0
|
6月前
|
消息中间件 存储 缓存
Kafka核心理论要点
Kafka核心理论要点
64 0
|
消息中间件 分布式计算 网络协议
SparkStreaming 案例_解释说明 | 学习笔记
快速学习 SparkStreaming 案例_解释说明
SparkStreaming 案例_解释说明 | 学习笔记
|
机器学习/深度学习 存储 分布式计算
分布式机器学习原理及实战(Pyspark)
分布式机器学习原理及实战(Pyspark)
下一篇
无影云桌面