StructuredStreaming的介绍_第一章

Structured Streaming
介绍
Structured Streaming(使用SQL计算实时数据)
官网
http://spark.apache.org/docs/latest/structured-streaming-programming-guide.html

Spark Streaming 是一个基于Spark Core
Structured Streaming是一个基于Spark SQL引擎的可扩展、容错的流处理引擎
意义:使用SQL计算实时数据,使用简单易学的技术实现实时计算。减低了实时处理的学习、使用难度
SparkSQL作用是计算离线数据。接收sql转换成算子,对数据进行计算。意义降低了使用、学习成本
Spark Streaming 作用是计算实时数据。意义在于能够近实时的计算最新的数据(实时计算

优点
不用去考虑是流式计算,还是批处理,只要使用同样的方式来编写计算操作即可, 提供了快速、可扩展、容错、端到端的一次性流处理
Spark SQL内部数据抽象(DF/DS)
DF=rdd+结构表
DS=rdd+结构+数据类型=DF+数据类型表
【Structured Streaming是一个基于 表 的可扩展、容错的流处理引擎。】
1.简洁的模型
可以直接把一个流想象成是无限增长的表格
2.一致的 API
和 Spark SQL 共用大部分 API,同时批处理和流处理程序还可以共用代码
3.卓越的性能
4.多语言支持
Scala,Java,Python,R 和 SQL
编程模型
一个流数据本质上就是一个持续增长的动态表格,最新的数据会源源不断写入表格的尾部。
在这里插入图片描述
对动态数据源进行实时查询,本质上就是对实时表的执行的SQL 查询
数据查询方式
1、触发器(Trigger)
2、定期周期执行
一个流的输出有多种模式,== 查询后的完整结果、查询相比的差异、追加最新的结果==。
应用场景
将数据源映射为类似于关系数据库中的表然后将经过计算得到的结果映射为另一张表完全以结构化的方式去操作流式数据
WordCount案例图示:
在这里插入图片描述
如图所示,
第一行表示从socket不断接收数据,
第二行可以看成是之前提到的“unbound table",
第三行为最终的wordCounts是结果集。
当有新的数据到达时,Spark会执行“增量"查询,并更新结果集;
该示例设置为Complete Mode(输出所有数据),因此每次都将所有数据输出到控制台;

1.在第1秒时,此时到达的数据为"cat dog"和"dog dog",因此我们可以得到第1秒时的结果集cat=1 dog=3,并输出到控制台;
2.当第2秒时,到达的数据为"owl cat",此时"unbound table"增加了一行数据"owl cat",执行word count查询并更新结果集,可得第2秒时的结果集为cat=2 dog=3 owl=1,并输出到控制台;
3.当第3秒时,到达的数据为"dog"和"owl",此时"unbound table"增加两行数据"dog"和"owl",执行word count查询并更新结果集,可得第3秒时的结果集为cat=2 dog=4 owl=2;

发布了238 篇原创文章 · 获赞 429 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/qq_45765882/article/details/105563674