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

相关文章
|
存储 JSON Ubuntu
Elasticsearch:理解 Percolator 数据类型及 Percolate 查询
Elasticsearch 是一款功能强大且功能丰富的搜索工具。本文将介绍一种小众的数据类型 Percolator ,同时介绍Percolate query的使用。 您需要基本了解 Elasticsearch,尤其是mapping和search。
7204 0
Elasticsearch:理解 Percolator 数据类型及 Percolate 查询
|
7月前
|
自然语言处理 JavaScript 前端开发
提升效率,从一个时间戳转换工具开始,CodeBuddy Craft 实战分享
在开发中,常需将时间戳与日期格式互转。这类“低门槛、高频率”需求虽基础却繁琐。CodeBuddy 的 Craft 模式可通过自然语言描述快速生成功能代码,如一个支持时区、简洁界面的时间戳转换工具。它省去实现细节的烦恼,甚至自动补全扩展功能,大幅提升效率。开发者无需重复造轮子,可专注于更有价值的工作。试试 CodeBuddy,感受“说一说就能写代码”的高效体验!
|
8月前
|
存储 搜索推荐 算法
大数据在电子健康记录中的潜力与挑战:一次技术和伦理的深度碰撞
大数据在电子健康记录中的潜力与挑战:一次技术和伦理的深度碰撞
240 12
|
分布式计算 监控 算法
Hadoop数据倾斜合理评估
【7月更文挑战第2天】
195 2
|
关系型数据库 MySQL 数据安全/隐私保护
mysql8.0版本skip-grant-tables出现的新问题
mysql8.0版本skip-grant-tables出现的新问题MySQL 初始化 mysqld --initialize 的时候会有密码,就这个样子, 可是毕竟总有人跟我一样,不熟悉安装过程,没有注意这一密码这一项,导致你现在不知道密码的尴尬处境,或者说你是正常用了某一天脑子短路忘了密码, 那...
2942 0
python绘图——绘制正负区分的柱形图[ax.bar()]
python绘图——绘制正负区分的柱形图[ax.bar()]
python绘图——绘制正负区分的柱形图[ax.bar()]
|
小程序 数据安全/隐私保护 Windows
Qt 制作小程序登录系统(超详细)
首先 简要介绍此 登陆系统的基本作用。 登录系统效果展示 下面这就是 登录系统的主界面了。主要通过账户,密码来登录系统app. 关于效果展示的各个功能,都会 详细为大家讲解。
453 0
|
SQL 分布式计算 算法
阿里云大数据ACP专业认证实验之06-MaxCompute内置函数(下)
阿里云大数据ACP专业认证实验之06-MaxCompute内置函数(下)
598 0
阿里云大数据ACP专业认证实验之06-MaxCompute内置函数(下)
|
中间件 编译器 Go
Go语言系列:如何搭建Go语言开发环境?
从【Go 语言系列:Go 从哪里来,Go 将去哪里?】这篇文章开始,我们将探索Go语言的魅力,一层一层的剥开它的心,然后吃透它搞定它。今天就将开启Go语言入门的相关基础知识学习,学习一门新的语言还得为其搭建开发环境,这样才能驾驭住它。
293 0
|
缓存 监控 Java
大麦库存的高性能及一致性是如何设计的?
大麦网作为现场娱乐票务平台,其业务覆盖了各大顶级演唱会和大型赛事等高流量项目。 票务行业库存系统不同于普通电商库存系统,瞬压过高的秒杀抢票,多场景、多阶段的售卖, 对一致性和稳定性提出更高要求。本文将为读者介绍现场娱乐行业票务库存高性能和一致性难 点解决和沉淀下来的库存稳定性建设经验。
大麦库存的高性能及一致性是如何设计的?