需要回答的问题:
- 什么是SQL?
- 大数据体系构成?
- SQL处理流程?
- SQL在分布式环境下如何展开数据处理?
一. 大数据体系
基础设施、储存系统、资源调度、分析引擎、权限管控数据开发、业务应用 课程主要集中于分析引擎、存储系统、消息队列
二. SQL
1.大数据体系和SQL
(1)SQL是提供分析引擎的功能:他是一种处理大数据的标准方式和语言 (结构化查询语言) (2)基本流程:
SQL AST logical plan physical Plan
Parser --> Analyzer ------> optimizer --> executor
(3)介绍
Parser
-> AST
parser是一个文本解析器,对输入的文本进行词法分析(拆分成单元)和语法分析(按照规定的语法规则检查单词组合)
AST是抽象语法树,把parser拆解出来的各种单元按照树形储存,不同节点有不同的语法功能 例子: x = 1+2 parser 负责解析这个代码的意思,AST负责按照树的结构储存代码的功能
AST
--->Analyzer
Analyzer执行的检查功能,他的输入是AST,他负责检查语义是否正确,SQL语句引用的数据是否可以操作,是否存在等问题
Logical Plan是语句的逻辑表示,由一些针对数据基本操作(operator)组成:选择、投影、连接、分组等,他不涉及数据的具体操作,只表示逻辑先后
例子:analyzer检查AST是否合适,可能要对第一列第二列相加,结果第一列第二列不存在。Logical Plan负责将语句转化为逻辑树
(left-deep tree:连接操作树结构,多个二元连接组成的树状结构,左边的节点代表已经操作好的执行任务,从左往右计算)
logical plan
------> optimizer
为什么查询优化:找到一个正确的能够完成数据处理目标的代价最小的物理执行计划,因为SQL只给定了目标,没有给定操作方式,也没有给定不同节点处理哪些数据,数据如何传输等
例子:比如说上一个阶段的logical Plan中要求排序,那么有很多种排序方法,代价不同 要充分利用数据的亲和性:尽量针对同一批数据的操作、数据传输读取在同一节点进行
目的是:最小化网络数据传输,因为网络传输比较慢
physical Plan ----> executor
plan fragment:优化器会将操作拆分优化到不同节点,每个节点获取获取一部分任务 节点之间用shuffle算子连接
Executor:节点执行任务