Spark大数据分析 课件 5.1 Spark SQL简介_第1页
Spark大数据分析 课件 5.1 Spark SQL简介_第2页
Spark大数据分析 课件 5.1 Spark SQL简介_第3页
Spark大数据分析 课件 5.1 Spark SQL简介_第4页
Spark大数据分析 课件 5.1 Spark SQL简介_第5页
已阅读5页,还剩8页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SparkSQL简介目录/Contents01什么是SparkSQL02SparkSQL架构什么是SparkSQL01什么是SparkSQLSparkSQL是Spark用来处理结构化数据(结构化数据可以来自外部结构化数据源也可以通过RDD获取)的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。外部的结构化数据源包括JSON、Parquet(默认)、RMDBS、Hive等。当前SparkSQL使用Catalyst优化器来对SQL进行优化,从而得到更加高效的执行方案。并且可以将结果存储到外部系统。什么是SparkSQLSparkSQL的前身是Shark,Shark最初是美国加州大学伯克利分校的实验室开发的Spark生态系统的组件之一,它运行在Spark系统之上,Shark重用了Hive的工作机制,并直接继承了Hive的各个组件,Shark将SQL语句的转换从MapReduce作业替换成了Spark作业,虽然这样提高了计算效率,但由于Shark过于依赖Hive,因此在版本迭代时很难添加新的优化策略,从而限制了Spark的发展,在2014年,伯克利实验室停止了对Shark的维护,转向SparkSQL的开发。SparkSQL主要提供了以下3个功能。什么是SparkSQL(1)SparkSQL可以从各种结构化数据源(如JSON、Hive、Parquet等)中读取数据,进行数据分析。(2)SparkSQL包含行业标准的JDBC和ODBC连接方式,因此它不局限于在Spark程序内使用SQL语句进行查询。(3)SparkSQL可以无缝地将SQL查询与Spark程序进行结合,它能够将结构化数据作为Spark中的分布式数据集(RDD)进行查询,在Python、Scala和Java中均集成了相关API,这种紧密的集成方式能够轻松地运行SQL查询以及复杂的分析算法。

SparkSQL架构02SparkSQL架构SparkSQL架构与Hive架构相比除了把底层的MapReduce执行引擎更改为Spark还修改了Catalyst优化器,SparkSQL快速的计算效率得益于Catalyst优化器。从HiveQL被解析成语法抽象树起,执行计划生成和优化的工作全部交给SparkSQL的Catalyst优化器进行负责和管理。SparkSQL快速的计算效益得益于Catalyst优化器。从HiveQL被解析成语法抽象树起,执行计划生成和优化的工作全部交给SparkSQL的Catalyst优化器负责和管理。如图7-1所示为SparkSQL整体架构。SparkSQL架构Catalyst优化器是一个新的可扩展的查询优化器,它是基于Scala函数式编程结构,SparkSQL开发工程师设计可扩展架构主要是为了在今后的版本迭代时,能够轻松地添加新的优化技术和功能,尤其是为了解决大数据生产环境中遇到的问题(例如,针对半结构化数据和高级数据分析),另外,Spark作为开源项目,外部开发人员可以针对项目需求自行扩展Catalyst优化器的功能。SparkSQL架构Catalyst主要的实现组件介绍如下。1、sqlParse:完成sql语句的语法解析功能,目前只提供了一个简单的sql解析器;2、Analyzer:主要完成绑定工作,将不同来源的UnresolvedLogicalPlan和数据元数据(如hivemetastore、Schemacatalog)进行绑定,生成resolvedLogicalPlan;3、Optimizer:对resolvedLogicalPlan进行优化,生成optimizedLogicalPlan;4、Planner:将LogicalPlan转换成PhysicalPlan;5、CostModel:主要根据过去的性能统计数据,选择最佳的物理执行计划Spark作为开源项目,外部开发人员可以针对项目需求自行扩展Catalyst优化器的功能。如图7-2所示为SparkSQL的运行架构。SparkSQL架构如上图所示,SparkSQL的工作流程可以分为如下几步:(1)使用SessionCatalog保存元数据在解析SQL语句之前,会创建SparkSession,或者如果是2.0之前的版本初始化SQLContext,SparkSession只是封装了SparkContext和SQLContext的创建而已。会把元数据保存在SessionCatalog中,涉及到表名,字段名称和字段类型。创建临时表或者视图,其实就会往SessionCatalog注册。(2)解析SQL使用ANTLR生成未绑定的逻辑计划当调用SparkSession的SQL或者SQLContext的SQL方法,我们以2.0为准,就会使用SparkSqlParser进行解析SQL。使用的ANTLR进行词法解析和语法解析。它分为2个步骤来生成UnresolvedLogicalPlan:词法分析:LexicalAnalysis,负责将token分组成符号类。构建一个分析树或者语法树AST。(3)使用分析器Analyzer绑定逻辑计划在该阶段,Analyzer会使用AnalyzerRules,并结合SessionCatalog,对未绑定的逻辑计划进行解析,生成已绑定的逻辑计划。SparkSQL架构(4)使用优化器Optimizer优化逻辑计划优化器也是会定义一套Rules,利用这些Rule对逻辑计划和Exepression进行迭代处理,从而使得树的节点进行合并和优化。(5)使用SparkPlanner生成物理计划SparkSpanner使用Plannin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论