文档详情

Spark大数据分析 课件 第5章 Spark核心原理.pptx

发布:2025-02-16约5.25千字共39页下载文档
文本预览下载声明

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作为开源项目,外部开发人员可以针对

显示全部
相似文档