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 可以模拟一张无限扩展的表,外部的数据会不断的流入到其中

相关文章
|
6月前
|
SQL 弹性计算 分布式计算
TiDB计算层详解:分布式计算框架与查询优化机制
【2月更文挑战第26天】本文将深入剖析TiDB的计算层,详细解析其分布式计算框架和查询优化机制。通过了解计算层的核心组件和工作原理,我们可以更好地理解TiDB如何高效处理SQL查询和计算任务。本文将从计算层的架构、任务分发、查询优化等方面展开介绍,帮助读者全面掌握TiDB计算层的关键技术和优势。
|
3月前
|
SQL Java 数据库
建模底层逻辑问题之ORM框架建模中,执行SQL的过程中被抽象和组织是如何实现的
建模底层逻辑问题之ORM框架建模中,执行SQL的过程中被抽象和组织是如何实现的
|
4月前
|
SQL 监控 Oracle
|
4月前
|
SQL Oracle 关系型数据库
关系型数据库Oracle并行处理能力
【7月更文挑战第10天】Oracle数据库的并行处理能力主要体现在其并行查询(Parallel Query, PQ)和并行执行(Parallel Execution, PE)功能上。这是Oracle为了提高大规模数据处理效率,特别是在多处理器或多核服务器环境中的性能而设计的功能。 1. **并行查询**:当一个SQL查询被提交给Oracle时,如果查询涉及到大量的数据操作,Oracle可以将这个查询分解成多个子任务,并行地在不同的处理器或核心上执行这些子任务,从而加快查询速度。并行查询可以应用于表扫描、索引扫描、排序、哈希连接等操作。 2. **并行执行**:并行执行是Oracle数据库的
75 2
|
5月前
|
存储 监控 数据管理
数据库原理与应用——简答题练习(数据管理技术发展、数据库主要特征、数据模型、关系模型、实体性之间的关系、DBMS的功能、相关术语解释、数据库系统)
数据库原理与应用——简答题练习(数据管理技术发展、数据库主要特征、数据模型、关系模型、实体性之间的关系、DBMS的功能、相关术语解释、数据库系统)
63 0
|
6月前
|
存储 算法 搜索推荐
矢量数据库基础:概念、原理与应用场景
【4月更文挑战第30天】矢量数据库,处理高维向量数据的工具,应用于GIS、推荐系统、图像搜索及语义搜索。核心原理是将原始数据嵌入到高维空间,通过索引算法优化搜索性能。现代深度学习模型如Word2Vec提升向量表示准确性,KD-Tree、LSH等算法加速相似性搜索。随着技术发展,矢量数据库在数据科学领域的重要性日益增强。
|
分布式计算 关系型数据库 BI
KYLIN 建模设计学习总结(概念、空间优化、查询性能优化)
KYLIN 建模设计学习总结(概念、空间优化、查询性能优化)
143 0
|
数据处理
《为并行图数据处理提供高层抽象/语言》电子版地址
为并行图数据处理提供高层抽象/语言
50 0
《为并行图数据处理提供高层抽象/语言》电子版地址
|
Dubbo NoSQL Java
架构:第八章:查询的资料
架构:第八章:查询的资料
|
存储 SQL 缓存
提高分层 SQL 结构的性能
提高分层 SQL 结构的性能
111 0