Structured_体系结构_无限扩展的表 | 学习笔记

简介: 快速学习 Structured_体系结构_无限扩展的表

开发者学堂课程【大数据Spark2020版(知识精讲与实战演练)第五阶段:Structured_体系结构_无限扩展的表】学习笔记,与课程紧密联系,让用户快速学习知识。

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


Structured_体系结构_无限扩展的表

内容介绍:

一、目标和过程

二、Dataset 和流式

三、WordCount 的原理

四、总结

 

体系结构更好的进行性能调优,理解越深,代码越好书写,体系结构包含两部分,无限扩展的表、体系结构。

 

一、目标和过程

1.目标

Structured Streaming 是一个复杂的体系,由很多组件组成,这些组件之间也会进行交互,如果无法站在整体视角去观察这些组件之间的关系,也无法理解 Structured Streaming 的全局。

2.步骤

(1)了解 Dataset 这个计算模型和流式计算的关系

(2)如何使用 Dataset 处理流式数据?

(3)WordCount 案例的执行过程和原理


二、Dataset 和流式计算

可以理解为 Spark 中的 Dataset 有两种,一种是处理静态批量数据的 Dataset,一种是处理动态实时流的 Dataset , 这两种 Dataset 之间的区别如下。

流式的 Dataset 使用 readStream 读取外部数据源创建,使用 writeStream 写入外部存储

批式的 Dataset 使用 read 读取外部数据源创建,使用 write 写入外部存储

// 2.数据集的生成,数据读取

val source: DataFrame = spark.readstream

.format( source = "socket" )

.option( "host","192.168.169.1e1")

.option( "port", 9999)

.load()

val sourceDS: Dataset[string] = source.as[string]

//3.数据的处理

val words = sourceDs.flatMap(_.split( regex =”“))

.map((_,1))

.groupByKey(_-_1)

.count()

// 4、结果集的生成和输出 words.writestream

.outputMode(outputMode.complete())

.format( source = "console")

.start()

.awaitTermination()

}

}

首先,用 readstream 读取,然后进行一系列的基于 Dataset 的操作。

其中 map 、flatMap 、groupByKey 等算子与之前 Spark 完全相同。中间第三部分是 Dataset 的操作。尾部用来输出数据。

Dataset 处理流式数据与处理批式数据的区别:

从代码角度分析,Dataset 使用 readstream 创建,批量数据处理使用 read 创建,结果集的生成与输出使用 writestream,批量数据处理的 Dataset 使用 write。

整个数据 API 是相同的。

Dataset 不仅可以处理批量数据,也可以处理流式数据。

谷歌中的论文思想,提出的概念。

一个 Dataset 在逻辑上表示表,一个关系数据图的表不能处理流式数据。

用 Dataset 编程模型表示流式计算

image.png

Dataset 表达的是一张关系型数据表的概念,但是没有规定这个表必须是静态的,不能扩展的。

如果把 Dataset 看做为—张可以无限扩展并且可以无限追加新数据的表,Dataset 在语义的层面上就可以表示流式数据的处理,这就是 Dataset 所遵循的模型。

使用 read 创建的就是—个不能扩展的表格,使用 readStream 创建的就是—个可以无限扩展的表格。

Dataset 可以通过 readStream 创建,创建出的就是—个可以无限扩展的表格。

处理流式和批示都可以使用 Dataset 这—套 API

·可以把流式的数据想象成一个不断增长,无限无界的表

·无论是否有界,全都使用 Dataset 这—套 API

·通过这样的做法,就能完全保证流和批的处理使用完全相同的代码,减少这两种处理方式的差异

 

三、WordCount 的原理

image.png

1.过程

整个计算过程大致上分为如下三个部分

(1) Source ,读取数据源

image.png

数据从外部系统接收

(2)Query ,在流式数据上的查询

image.png

查询即为处理,把一张表查为另一张表

(3)Result ,结果集生成

image.png

2.分析 WordCount 案例

第一次输入的数据为 hello world 和 hello speak,在 00:00 时输入,放入 Input Table 内部中,到 Query 查询,查询完生成 Result Table 这张表,在 Output Mode 输出全局的结果。

image.png

在 01:00 时,输入两条新数据 hello spark 和 hello Hadoop,无限扩展的表格往下扩展了两条数据,在新的表格中执行一次新的查询,查询出新的表格,在数据台输出全局的结果。

image.png

在 02:00 时,输入新的 hello speak,无限扩展的表格扩展一条新的数据,通过查询形成一个新的表格,结果全部输出。

image.png

累加次数

Output Mode 代表输出展示到外部的模式。

整个的过程如下

①随着时间段的流动,对外部数据进行批次的划分

②在逻辑上(前提),将缓存所有的数据,生成一张无限扩展的表,在这张表上进行查询

③根据要生成的结果类型,来选择是否生成基于整个数据集的结果

 

四、总结

image.png

此图用来理解无线扩展表的概念。箭头表示时间的流向,箭头的每一小块代表的数据,左侧是新的数据,数据放在右侧表格,表格是无限扩展的。

Dataset 不仅可以表达流式数据的处理,也可以表达批量数据的处理

表达流式处理,是一个二维表,表达流式处理,是一个无限扩展的表

Dataset 之所以可以表达流式数据的处理,因为 Dataset 可以模拟一张无限扩展的表,外部的数据会不断的流入到其中

相关文章
|
7月前
|
SQL 弹性计算 分布式计算
TiDB计算层详解:分布式计算框架与查询优化机制
【2月更文挑战第26天】本文将深入剖析TiDB的计算层,详细解析其分布式计算框架和查询优化机制。通过了解计算层的核心组件和工作原理,我们可以更好地理解TiDB如何高效处理SQL查询和计算任务。本文将从计算层的架构、任务分发、查询优化等方面展开介绍,帮助读者全面掌握TiDB计算层的关键技术和优势。
|
4月前
|
SQL 数据管理 关系型数据库
SQL分区表技术的奥秘:如何用分区策略让你的大规模数据飞起来?
【8月更文挑战第31天】在现代软件开发中,处理大规模数据是常见挑战,而SQL分区表技术提供了一种高效的解决方案。本文详细介绍了SQL分区表的概念、类型(范围、列表、哈希和键分区)及其创建与维护方法,并通过示例代码展示了如何添加、删除和重组分区。遵循了解查询模式、定期维护分区及使用数据库性能工具等最佳实践,可以帮助开发者更高效地进行数据管理。随着SQL生态的发展,分区表技术将在未来发挥更大作用。
51 0
|
5月前
|
存储 SQL 运维
MSSQL性能调优精要:索引深度优化、查询高效重构与并发精细控制
在MSSQL数据库的运维与优化领域,性能调优是一项复杂而细致的工作,直接关系到数据库的稳定性和响应速度
|
6月前
|
XML NoSQL 数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 概念 + 数据模型
【6月更文挑战第5天】本文探讨了数据模型的分析,关注点包括数据元素、关系及不同类型的模型(关系、文档、图)与Schema模式。查询语言的考量涉及与数据模型的关联及声明式与命令式编程。数据模型从应用开发者到硬件工程师的各抽象层次中起着简化复杂性的关键作用,理想模型应具备简洁直观和可组合性。
47 2
|
6月前
|
SQL 人工智能 关系型数据库
【DDIA笔记】【ch2】 数据模型和查询语言 -- 文档模型中Schema的灵活性
【6月更文挑战第8天】网状模型是层次模型的扩展,允许节点有多重父节点,但导航复杂,需要预知数据库结构。关系模型将数据组织为元组和关系,强调声明式查询,解耦查询语句与执行路径,简化了访问并通过查询优化器提高效率。文档型数据库适合树形结构数据,提供弱模式灵活性,但在Join支持和访问局部性上不如关系型。关系型数据库通过外键和Join处理多对多关系,适合高度关联数据。文档型数据库的模式灵活性体现在schema-on-read,写入时不校验,读取时解析,牺牲性能换取灵活性。适用于不同类型或结构变化的数据场景。
53 0
|
6月前
|
存储 监控 数据管理
数据库原理与应用——简答题练习(数据管理技术发展、数据库主要特征、数据模型、关系模型、实体性之间的关系、DBMS的功能、相关术语解释、数据库系统)
数据库原理与应用——简答题练习(数据管理技术发展、数据库主要特征、数据模型、关系模型、实体性之间的关系、DBMS的功能、相关术语解释、数据库系统)
83 0
|
6月前
|
存储 关系型数据库 MySQL
第七章InnoDB数据存储结构
第七章InnoDB数据存储结构
35 0
|
分布式计算 关系型数据库 BI
KYLIN 建模设计学习总结(概念、空间优化、查询性能优化)
KYLIN 建模设计学习总结(概念、空间优化、查询性能优化)
157 0
|
数据处理
《为并行图数据处理提供高层抽象/语言》电子版地址
为并行图数据处理提供高层抽象/语言
55 0
《为并行图数据处理提供高层抽象/语言》电子版地址
|
Dubbo NoSQL Java
架构:第八章:查询的资料
架构:第八章:查询的资料