主页 > 新闻资讯 > 大数据学习:Spark SQL及基础引擎

大数据学习:Spark SQL及基础引擎

作者:张老师 浏览次数: 2021-05-07 16:56
Spark SQL作为Spark计算查询的重要支撑,在Spark生态当中的重要性是不言而喻的。Spark SQL使得一般的开发人员或者非专业的开发人员,也能快速完成相应的计算查询需求,这也是其存在的重要意义。今天的大数据学习分享,我们就来讲讲Spark SQL及基础引擎。

在编程级别上,Spark SQL允许开发人员对具有模式的结构化数据发出与ANSI SQL:2003兼容的查询。自从在Spark1.3中引入以来,Spark SQL已经发展成为一个强大的引擎,在此基础上建立了许多高级的结构化功能。除了允许你对数据发出类似SQL的查询外,Spark SQL引擎还包括:

统一Spark组件,并允许抽象为Java、Scala、Python和R中的DataFrame/Dataset,这简化了对结构化数据集的工作。

连接到Apache Hive元存储库和表。

从结构化文件(JSON、CSV、文本、CSV、拼花、ORC等)读写具有特定schema的结构化数据。并将数据转换为临时表。

提供交互式Spark SQL Shell支持快速数据浏览。

通过标准数据库JDBC/ODBC连接器提供与外部工具之间的桥梁。

为JVM生成优化的查询计划和紧凑的代码,以便最终执行。

大数据学习:Spark SQL及基础引擎

Spark SQL引擎的核心是Catalyst优化器和Project Tungsten。它们一起支持高级DataFrame、Dataset API和SQL查询。

优化器

Catalyst优化器接受计算查询,并将其转换为一个执行计划。它经历了四个转换阶段,如下图所示:

大数据学习:Spark SQL及基础引擎

阶段1:分析

Spark SQL引擎首先会为SQL或DataFrame查询生成一个抽象语法树(AST)。在此初始阶段,任何列或表名都将会被解析为内部的Catalog,catalog是一个指向Spark SQL的编程接口,该接口包含列、数据类型、函数、表、数据库、列名等等的列表。一旦全部成功解决,查询将继续进入下一阶段。

阶段2:逻辑优化

该阶段包括两个内部阶段。应用基于标准化的优化方法,Catalyst优化器将首先构建一组多个计划,然后使用其基于成本的优化器(CBO)将成本分配给每个计划。这些计划展示为算子树的形式;例如,它们可能包括常数折叠、谓词下推、投影计算、布尔表达式简化等过程。这个逻辑计划是对物理计划的输入。

阶段3:物理执行计划

在此阶段,Spark SQL使用与Spark执行引擎相匹配的物理运算符,为所选的逻辑计划生成最佳的物理计划。

阶段4:代码生成

查询优化的最后阶段涉及生成在每台机器上运行的高效Java字节码。因为Spark SQL可以对内存中加载的数据集进行操作,所以Spark可以使用最先进的编译器技术来生成代码以加快执行速度。换句话说,它充当了编译器。Tungsten项目在这里发挥了重要作用,是整个阶段代码生成的利器。

整个阶段的代码生成是什么呢?这是一个物理查询优化阶段,它将整个查询分解成一个函数,摆脱虚拟函数调用,并使用CPU寄存器存储中间数据。Spark2.0中引入的第二代Tungsten引擎使用此方法生成紧凑的RDD代码以便最终执行。这种精简的策略显著提高了CPU的效率和性能。

关于大数据学习,Spark SQL及基础引擎,以上就为大家做了简单的介绍了。Spark SQL其内部运行机制,需要多去理解,这对于查询任务的操作实现,也有很好的指导意义。成都加米谷大数据,专业大数据培训机构,大数据开发,数据分析与挖掘,零基础班本月正在招生中,课程大纲及试学视频,可联系客服获取!
热点排行
推荐文章
立即申请>>