Spark SQL架构工作原理及流程解析
Spark SQL架构工作原理及流程解析,spark sql从shark发展而来,Shark为了实现Hive兼容,在HQL方面重用了Hive中HQL的解析、逻辑执行计划翻译、执行计划优化等逻辑。
Spark SQL兼容Hive,因为Spark SQL架构与Hive底层结构相似,Spark SQL复用了Hive提供的元数据仓库(Metastore)、HiveQL、用户自定义函数(UDF)以及序列化和反序列工具(SerDes),深入了解Spark SQL底层架构:
Spark SQL架构
Spark SQL架构与Hive架构相比除了把底层的MapReduce执行引擎更改为Spark还修改了Catalyst优化器,Spark SQL快速的计算效率得益于Catalyst优化器。从HiveQL被解析成语法抽象树起,执行计划生成和优化的工作全部交给Spark SQL的Catalyst优化器进行负责和管理。
Catalyst优化器是一个新的可扩展的查询优化器,它是基于Scala函数式编程结构,Spark SQL开发工程师设计可扩展架构主要是为了在今后的版本迭代时,能够轻松地添加新的优化技术和功能,尤其是为了解决大数据生产环境中遇到的问题(例如,针对半结构化数据和高级数据分析),另外,Spark作为开源项目,外部开发人员可以针对项目需求自行扩展Catalyst优化器的功能。Spark SQL的工作原理图:
Spark SQL工作原理
Spark要想很好地支持SQL,就需要完成解析(Parser)、优化(Optimizer)、执行(Execution)三大过程。Catalyst优化器在执行计划生成和优化的工作时候,它离不开自己内部的五大组件,具体介绍如下所示。
Parse组件:该组件根据一定的语义规则(即第三方类库ANTLR)将SparkSql字符串解析为一个抽象语法树/AST。
Analyze组件:该组件会遍历整个AST,并对AST上的每个节点进行数据类型的绑定以及函数绑定,然后根据元数据信息Catalog对数据表中的字段进行解析。
Optimizer组件:该组件是Catalyst的核心,主要分为RBO和CBO两种优化策略,其中RBO是基于规则优化,CBO是基于代价优化。
SparkPlanner组件:优化后的逻辑执行计划OptimizedLogicalPlan依然是逻辑的,并不能被Spark系统理解,此时需要将OptimizedLogicalPlan转换成physical plan(物理计划)。
CostModel组件:主要根据过去的性能统计数据,选择最佳的物理执行计划。
在了解了上述组件的作用后,下面分步骤讲解Spark SQL工作流程。
1、在解析SQL语句之前,会创建SparkSession,涉及到表名、字段名称和字段类型的元数据都将保存在Catalog中;
2、当调用SparkSession的sql()方法时就会使用SparkSqlParser进行解析SQL语句,解析过程中使用的ANTLR进行词法解析和语法解析;
3、接着使用Analyzer分析器绑定逻辑计划,在该阶段,Analyzer会使用Analyzer Rules,并结合Catalog,对未绑定的逻辑计划进行解析,生成已绑定的逻辑计划;
4、然后Optimizer根据预先定义好的规则(RBO)对 Resolved Logical Plan 进行优化并生成 Optimized Logical Plan(最优逻辑计划);
5、接着使用SparkPlanner对优化后的逻辑计划进行转换,生成多个可以执行的物理计划Physical Plan;
6、 接着CBO优化策略会根据Cost Model算出每个Physical Plan的代价,并选取代价最小的 Physical Plan作为最终的Physical Plan;
7、最终使用QueryExecution执行物理计划,此时则调用SparkPlan的execute()方法,返回RDD。
第一阶段:大数据开发入门
1、MySQL数据库及SQL语法
MySQL可以处理拥有上千万条记录的大型数据库,使用标准的SQL数据语言形式,MySQL可以安装在不同的操作系统,并且提供多种编程语言的操作接口,这些编程语言包括C、C++、Python、Java、Ruby等等。支持多种存储引擎。
SQL就是客户端和MySQL服务器端进行通信和沟通的语言。
2、Kettle与BI工具
Kettle作为一个端对端的数据集成平台,其部分特色功能包括:无代码拖拽式构建数据管道、多数据源对接、数据管道可视化、模板化开发数据管道、可视化计划任务、深度Hadoop支持、数据任务下压Spark集群、数据挖掘与机器学习支持。
3、Python与数据库交互
实际的生产任务中,数据几乎全部存在与数据库中,因此,与数据库的交互成为一件难以避免的事情。想要在Python代码中和mysql数据库进行交互,需要借助一个第三方的模块“pymysql”
第二阶段:大数据核心基础
1、Linux
Linux 作为操作系统,本身是为了管理内存,调度进程,处理网络协议栈等等。而大数据的发展是基于开源软件的平台,大数据的分布式集群( Hadoop,Spark )都是搭建在多台 Linux 系统上,对集群的执行命令都是在 Linux 终端窗口输入的。据Linux基金会的研究,86%的企业已经使用Linux操作系统进行大数据平台的构建。Linux占据优势。
2、Hadoop基础
2022最新大数据Hadoop入门教程,最适合零基础自学的大数据
Hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。它很擅长存储大量的半结构化的数据集。也非常擅长分布式计算——快速地跨多台机器处理大型数据集合。Hadoop的框架最核心的设计就是:HDFS和MapReduce.HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
MapReduce和Hadoop是相互独立的,实际上又能相互配合工作得很好。MapReduce是处理大量半结构化数据集合的编程模型。
3、大数据开发Hive基础
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。Hive十分适合对数据仓库进行统计分析。
第三阶段:千亿级数仓技术
企业级在线教育项目实战(Hive数仓项目完整流程)
大数据项目实战教程_大数据企业级离线数据仓库,在线教育项目实战(Hive数仓项目完整流程)
以真实项目为驱动,学习离线数仓技术。建立集团数据仓库,统一集团数据中心,把分散的业务数据集中存储和处理 ;从需求调研、设计、版本控制、研发、测试到落地上线,涵盖了项目的完整工序 ;挖掘分析海量用户行为数据,定制多维数据集合,形成数据集市,供各个场景主题使用。
第四阶段:PB内存计算
1、Python编程基础+进阶
全套Python教程_Python基础入门视频教程,零基础小白自学Python必备教程
Python高级语法进阶教程_python多任务及网络编程,从零搭建网站全套教程
Python是基于ABC语言的发展来的,Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
Python 语言的语法非常简洁明了,即便是非软件专业的初学者,也很容易上手,和其它编程语言相比,实现同一个功能,Python 语言的实现代码往往是最短的。
2、Spark技术栈
Spark全套视频教程,大数据spark3.2从基础到精通,全网首套基于Python语言的spark教程
Spark是大数据体系的明星产品,是一款高性能的分布式内存迭代计算框架,可以处理海量规模的数据。本课程基于Python语言学习Spark3.2开发,课程的讲解注重理论联系实际,高效快捷,深入浅出,让初学者也能快速掌握。让有经验的工程师也能有所收获。
3、大数据Flink技术栈
Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任务。Flink也可以方便地和Hadoop生态圈中其他项目集成,例如Flink可以读取存储在HDFS或HBase中的静态数据,以Kafka作为流式的数据源,直接重用MapReduce或Storm代码,或是通过YARN申请集群资源等。
4.Spark离线数仓工业项目实战
全网首次披露大数据Spark离线数仓工业项目实战,Hive+Spark构建企业级大数据平台
通过大数据技术架构,解决工业物联网制造行业的数据存储和分析、可视化、个性化推荐问题。一站制造项目主要基于Hive数仓分层来存储各个业务指标数据,基于sparkSQL做数据分析。核心业务涉及运营商、呼叫中心、工单、油站、仓储物料。
Spark SQL架构工作原理及流程解析相关推荐
- Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理、NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统
Linux运维系列总结-Linux系统启动过程.WEB工作原理.DHCP工作原理.DNS解析原理.NFS网络文件系统.FTP文件传输协议.PXE+KICKSTART自动安装系统 1.Linux系统的启 ...
- ARKit从入门到精通-ARKit工作原理及流程介绍
2017-06-15 坤小 Cocoa开发者社区 转载请注明出处:http://www.jianshu.com/p/0492c7122d2f 1.1-写在前面的话 1.2-ARKit与SceneKit ...
- ARKit从入门到精通(2)-ARKit工作原理及流程介绍
转载请注明出处:ARKit从入门到精通(2)-ARKit工作原理及流程介绍 1.1-写在前面的话 1.2-ARKit与SceneKit的关系 1.3-ARKit工作原理 1.3.1-ARSCNView ...
- springmvc工作流程_springMVC工作原理及流程详细讲解
简述 本文主要介绍springMVC工作原理. 工作原理 客户端发送HTTP请求,DispatcherServlet控制器拦截到请求,调用HandlerMapping 解析请求对应的Handler,H ...
- JVM 工作原理和流程
转 Java 详解 JVM 工作原理和流程 <div class="article-info-box"><div class="article-bar- ...
- Spark SQL / Catalyst 内部原理 与 RBO
Spark SQL 架构 Spark SQL 的整体架构如下图所示 从上图可见,无论是直接使用 SQL 语句还是使用 DataFrame,都会经过如下步骤转换成 DAG 对 RDD 的操作 Parse ...
- 身份证OCR识别工作原理及流程
随着互联网科技.移动互联科技的发展和云端计算服务.移动智能设备的普及(性能提升),智能OCR识别技术在云端.服务器端及移动端的应用也得到了长足的发展.今天为大家介绍下身份证OCR识别如何快捷.准确的识 ...
- 计算机网络之交换机的工作原理---超详细解析,谁都看得懂!!
在了解交换机的工作原理之前,我们先要了解几个概念. 一.相关概念 1.OSI七层模型是哪七层? 自上而下分别是: 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 交换机工作在数据链路层, ...
- SSM三大框架+SpringMVC的工作原理及其流程
SSM三大框架+SpringMVC的工作原理及其流程 一.SSM中各层作用及关系 1.持久层:DAO层(mapper层)(属于mybatis模块) DAO层(Mapper层):主要负责与数据库 ...
最新文章
- Android笔记三十三.BroadcastReceiver使用
- Delegate成员变量和Event的区别
- 小结 frambuffer 原理及流程 (五)
- 【线段树 泰勒展开】Codechef April Challenge 2018 Chef at the Food Fair
- 用原生JavaScript实现淡入淡出轮播图
- SAP UI5 requireBusyDialog
- linux系统web站点设置-http基础设置
- 计算机系统结构概念,计算机系统结构的基本概念
- 数据挖掘产品 IBM SPSS Modeler 新手使用入门
- python属于低级语言还是高级语言,【单选题】Python语言属于
A. 机器语言 B. 汇编语言 C. 高级语言 D. 科学计算语言...
- 面试必刷算法TOP101之买卖股票问题 TOP16
- c++学习——(6)数组对象与对象成员
- 网络安全学习笔记——蓝队实战攻防
- 【数据分析与挖掘】数据分析学习及实践记录 | part 03-matplotlib常用统计图
- 苹果SSL_goto漏洞简介
- 学习数据可视化,读哪本书比较好?
- remote error:CAPTCHA required
- 八一农垦计算机科学哪个学院,黑龙江八一农垦大学计算机科学与技术专业2015年在河南理科高考录取最低分数线...
- xp系统无法从补丁服务器获取补丁,WindowsXP系统依然能获取微软补丁的小技巧
- 【论文阅读】CFC-Net 关键特征捕获网络