Spark大数据分析 课件 第5章 Spark核心原理.pptx
SparkSQL简介
什么是SparkSQL
SparkSQL架构
什么是SparkSQL
望
1
什么是SparkSQL
·SparkSQL是Spark用来处理结构化数据(结构化数据可以来自外部结构化数据源也可以通过RDD获取)的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL
查询引擎的作用。
·外部的结构化数据源包括JSON、Parquet(默认)、RMDBS、Hive等。当前SparkSQL使用Catalyst优化器来对SQL进行优化,从而得到更加高效的执行方案。并且可以将结果存储到外部系统。
什么是SparkSQL
·SparkSQL的前身是Shark,Shark最初是美国加州大学伯克利分校的实验室开发的Spark生态系统的组件之一,它运行在Spark系统之上,Shark重用了Hive的工作机制,并直接继承了Hive
的各个组件,Shark将SQL语句的转换从MapReduce作业替换成了Spark作业,虽然这样提高了计算效率,但由于Shark过于依赖Hive,因此在版本迭代时很难添加新的优化策略,从而限制了Spark的发展,在2014年,伯克利实验室停止了对Shark的维护,转向SparkSQL的开发。
SparkSQL主要提供了以下3个功能。
·(1)SparkSQL可以从各种结构化数
据源(如JSON、Hive、Parquet等)中读取数据,进行数据分析。
·(2)SparkSQL包含行业标准的
JDBC和ODBC连接方式,因此它不局限于在Spark程序内使用SQL语句进行查询。
·(3)SparkSQL可以无缝地将SQL查询
与Spark程序进行结合,它能够将结
构化数据作为Spark中的分布式数据集(RDD)进行查询,在Python、
Scala和Java中均集成了相关API,这
种紧密的集成方式能够轻松地运行SQL查询以及复杂的分析算法。
什么是SparkSQL
SparkSQL架构
应
SparkSQL架构
·SparkSQL架构与Hive架构相比除了把底层的MapReduce执行引擎更改为Spark还修改了Catalyst优化器,
SparkSQL快速的计算效率得益于Catalyst优化器。从HiveQL被解析成语法抽象树起,执行计划生成和优化的工作全部交给SparkSQL的Catalyst优化器进行负责和管理。
·SparkSQL快速的计算效益得益于Catalyst优化器。从HiveQL被解析成语法抽象树起,执行计划生成和优化的工作全部交给SparkSQL的Catalyst优化器负责和管理。如图7-1所示为SparkSQL整体架构。
SparkSQLCLI
JDBC/ODBC
数据源
JSON
JDBC
SparkSQL架构
·Catalyst优化器是一个新的可扩展的查询优化器,它是基于Scala函数式编程结构,
SparkSQL开发工程师设计可扩展架构主要是为了在今后的版本迭代时,能够轻松地添加新的优化技术和功能,尤其是为了解决大数据生产环境中遇到的问题(例如,针对半结构化数据和高级数据分析),另外,Spark作为开源项目,外部开发人员可以针对项目需求自行扩展Catalyst优化器的功能。
SparkSQL架构
·Catalyst主要的实现组件介绍如下。
·1、sqlParse:完成sql语句的语法解析功能,目前只提供了一个简单的sql解析器;
·2、Analyzer:主要完成绑定工作,将不同来源的UnresolvedLogicalPlan和数据元数据(如hive
catalog)进行绑定,生成resolvedLogicalPlan;
·3、Optimizer:对resolvedLogicalPlan进行优化,生成optimizedLogicalPlan;
·4、Planner:将LogicalPlan转换成PhysicalPlan;
·5、CostModel:主要根据过去的性能统计数据,选择最佳的物理执行计划
·spark作为开源项目,外部开发人员可以针对