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 ?

●如何读取数据?

●如何容错?

相关文章
|
前端开发
仿新浪sina轻个人微博html静态网页模板
一款最新的仿新浪sina个人微博html静态网页模板(轻博客/轻微博/贴吧主页、qq社交空间主题),模板清新简洁、新颖,包含关注、粉丝、人气、个人资料、文章、视频等。
232 0
|
NoSQL 数据可视化 Redis
Mac安装Redis
Mac安装Redis
391 3
|
存储 索引 Python
元组(Tuple)在Python编程中的应用与实例
元组(Tuple)在Python编程中的应用与实例
740 2
|
机器学习/深度学习 数据可视化 算法
【2023美赛】C题Wordle预测27页中文论文及Python代码详解
本文提供了2023年美赛C题Wordle预测的27页中文论文及Python代码的详细解读,涵盖了时间序列预测、特征工程、模型选择与评估、聚类分析等多个方面,并提供了相关数据和代码的下载方式。
490 3
|
11月前
|
存储 数据挖掘 数据处理
Pandas高级数据处理:性能优化技巧
Pandas 是 Python 数据分析的强大工具,但在处理大规模数据集时可能遇到性能瓶颈。本文介绍常见性能问题及优化方法,包括数据加载(分块读取、选择必要列、指定数据类型)、筛选过滤(避免链式索引、优化布尔索引)、聚合分组(使用 `transform`、减少列)等,并提供代码案例。同时,针对内存溢出、数据类型不匹配和索引冲突等常见报错,给出解决方案。通过这些优化措施,提升 Pandas 数据处理的效率和稳定性。
625 14
|
监控 负载均衡 容灾
slb测试配置
slb测试配置
349 5
|
供应链 网络协议 安全
物联网协议包含哪些协议?
物联网协议是物联网生态系统中不可或缺的组成部分,它们负责处理和协调物联网设备之间的通信。
707 3
|
编译器 C语言 C++
详解C/C++动态内存函数(malloc、free、calloc、realloc)
详解C/C++动态内存函数(malloc、free、calloc、realloc)
2451 1
|
JavaScript
vue3表格编辑(数据回显)和删除功能实现
vue3表格编辑(数据回显)和删除功能实现
Xmind2022最新版破解与激活教程,操作简单
Xmind 是一款 全功能 的思维导图和头脑风暴软件。像大脑的瑞士军刀一般,助你理清思路,捕捉创意。
4266 0