structure_介绍_对比 | 学习笔记

简介: 快速学习 structure_介绍_对比

开发者学堂课程【大数据Spark2020版(知识精讲与实战演练)第五阶段:structure_介绍_对比】学习笔记,与课程紧密联系,让用户快速学习知识。

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


structure_介绍_对比

内容介绍

一. 目标和过程

二. Spark Streaming 时代

三. Structured Streaming 时代

四. Spark Streaming 和 Structured Streaming 的对比

五. 总结

 

一. 目标和过程

1.目标

理解 Spark Streaming 和 Structured Streaming 之间的区别,是非常必要的,从这点上可以理解 Structured Streaming 的过去和产生契机

2.过程

(1)Spark Streaming 时代

(2)Structured Streaming 时代

(3)Spark Streaming 和 Structured Streaming

 

二. Spark Streaming 时代

Spark Streaming 其实就是 RDD 的 API 的流式工具其本质还是 RDD,存储和执行过程依然类似 RDD。

image.png

整个的 Spark 个体系看起来就像这张图。首先最底层是 Spark RDD ,即 Spark core ,基于 Spark core 之上有 Spark SQL ,即

Dataset 。然后基于 Spark core 之上还有 Spark Streaming ,和 Spark Streaming 及 Spark SQL 同级的,还有 MLIib 做机器学习以及 Graph X 做图计算。

 

三.Structured Streaming 时代

Structured Streaming 是 Dataset 的 API 的流式工具,  API 和 Dataset 保持高度一致。

但是自从出现了 Structured Streaming 以后,整个的时代会有一点点不同了。

 

在 Spark 2.0 以后, Structured Streaming 已经标记为生产可用的了。理论上现阶段做一个新项目,在不考虑历史原因的情况下,不应该再使用 Spark Streaming 了,应该使用 Structured Streaming 。

在这个时代里, Spark SQL 作为整个的底层,整个 RDD 都不再使用了。

在 Spark SQL 之上,可以使用 Dataset ,Data Frame , Structured Streaming ,MLIib 和 Graph Frame 。在上一个时代最底层是 RDD ,在 RDD 之上有 Spark SQL ,Spark Streaming, MLIib 和 Graph X,但是现在已经把 RDD 给淘汰了。 RDD 作为整个的最下层,作为 Spark SQL 的最下层,所有的 API 都是在 Spark SQL 之上提供出来的,比如 Dataset , Structured Streaming , MLIib 和 Graph Frame 。

Spark Streaming 在以上两张图里可以观察到它的底层是 RDD ,而 Structured Streaming 的底层是 Dataset ,这方面是有一点区别的。

首先 Spark Streaming 无论多高级,无论跟原来多像,但是它里面有一些特殊的操作,比如说 Update State ByKey  , Windows 操作, foreach RDD ,这些操作都是 RDD 当中没有的。

但是 Structured Streaming  里面 Dataset 和原生的 Spark SQL 代码完全相同,只不过一个是针对流,一个是针对批,只有这一点点区别。所以 Structured Streaming 真正做到了在 API 层面上统一所有的操作。 Spark Streaming 虽然有这样的一个目标,但是它没有做到, Structured Streaming 做到了。

Structured Streaming 也支持了连续流模型, Spark Streaming 只支持小批量的流模型。

但是 Structured Streaming 有一个试验的性质和特点名为连续滤模性。即正常情况下,可以直接一条条数据处理,做到毫秒级的延迟,类似于 Flink 。

在 2.0 以后, Structured Streaming 被标注为稳定,意味着新的 Spark 项目当中不该再使用 Spark Streaming 而使用 Structured Streaming 。

image.png

 

四.Spark Streaming 和 Structured Streaming 的对比

1. Structured Streaming 相比于 Spark Streaming 的进步就类似于 Dataset 相比于 RDD 的进步。

2.另外还有一点, Structured Streaming 已经支持了连续流模型,也就是类似于 Flink 那样的实时流,而不是小批量,但在使用的时候仍然有限制,大部分情况还是应该采用小批量模式。

在 2.2.0 以后 Structured Streaming 被标注为稳定版本,意味着以后的 Spark 流式开发不应该在采用 Spark Streaming 了。

 

五.总结

Structured Streaming 作用:简单来说就是替代掉 Spark Streaming

进步性:

首先它在 API 层面上和 Dataset 是同一套 API ,没有区别。第二点, Structured Streaming 支持了连续流模型。

相关文章
|
1月前
|
编译器
结构体(structure)的认识
本文介绍了结构体的基本概念,包括声明规则、初始化方法,特别关注了自引用的正确实践以及结构体传参时的效率问题,指出使用指针传递结构体以提高性能。
33 0
|
测试技术 Shell Go
译 | Prefer table driven tests(一)
译 | Prefer table driven tests
82 0
|
存储 测试技术 Go
译 | Prefer table driven tests(二)
译 | Prefer table driven tests(二)
92 0
|
缓存 测试技术 Go
译 | Prefer table driven tests(三)
译 | Prefer table driven tests(三)
86 0
PAT (Advanced Level) Practice - 1026 Table Tennis(30 分)
PAT (Advanced Level) Practice - 1026 Table Tennis(30 分)
127 0
|
算法 Go 索引
Data Structure_Visualization
所以代码附上GitHub:https://github.com/GreenArrow2017/DataStructure_Java/tree/master/out/production/DataStructure_Java/ApplicationOfAlgorithm 排序可视化 SelectionSort 选择排序很简单,所有的排序算法在前面的博客都有讲解: https://www.jianshu.com/p/7fbf8671c742 选择排序很简单,遍历所有元素,查看一下他们的之后最小的元素和当前元素交换即可。
1542 0
|
缓存 Java 图形学
Data Structure_JavaSwing
Java Swing的基础 首先需要注意的就是JFrame这个类,如果在main类整直接new一个出来是没有任何的变化,需要设置一个setvisible为true来显示出来。
944 0
|
索引 Python
Data Structure_树
线段树Segment Tree 对于有一类问题,时常关注的是一个区间或者是一个线段,那么就可以使用线段树来解决。比较经典的问题,就是区间染色问题:有一面墙,长度为n,每次选择一段墙来染色,一开始4-6绘制成黄色,然后1-10绘制蓝色,2-7绘制红色,若干次绘色之后能看见多少种颜色,或者是在区间「i,j」区间里面可以看到多少种颜色。
981 0
|
存储 机器学习/深度学习 算法
Data Structure_图
图论 无权图 交通运输,社交网络,互联网,工作的安排,闹区活动等等都可以用到图论处理。图可以分成两大类,一类是无向图,就是没有方向的,就好像两个人都互相认识一样,有向图就是单方面的联系,一个人认识另一个人,但是另一个人确不认识。
1091 0