《通信数据分析与实战》课件——第四章 Spark SQL.pptx
通信数据分析与实战SparkSQL第四章第1节
2知道SparkSQL的作用掌握SparkSQL的架构学习目标TARGET
SparkSQL的概述在很多情况下,开发工程师并不了解Scala语言,也不了解Spark常用API,但又非常想要使用Spark框架提供的强大的数据分析能力。Spark的开发工程师们考虑到了这个问题,利用SQL语言的语法简洁、学习门槛低以及在编程语言普及程度和流行程度高等诸多优势,从而开发了SparkSQL模块,通过SparkSQL,开发人员能够通过使用SQL语句,实现对结构化数据的处理。
SparkSQL的概述SparkSQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象结构叫做DataFrame的数据模型(即带有Schema信息的RDD),SparkSQL作为分布式SQL查询引擎,让用户可以通过SQL、DataFramesAPI和DatasetsAPI三种方式实现对结构化数据的处理。
SparkSQL的概述SparkSQL主要提供了以下三个功能:SparkSQL可从各种结构化数据源中读取数据,进行数据分析。SparkSQL包含行业标准的JDBC和ODBC连接方式,因此它不局限于在Spark程序内使用SQL语句进行查询。SparkSQL可以无缝地将SQL查询与Spark程序进行结合,它能够将结构化数据作为Spark中的分布式数据集(RDD)进行查询。
SparkSQL的架构SparkSQL架构与Hive架构相比,把底层的MapReduce执行引擎更改为Spark,还修改了Catalyst优化器,SparkSQL快速的计算效率得益于Catalyst优化器。从HiveQL被解析成语法抽象树起,执行计划生成和优化的工作全部交给SparkSQL的Catalyst优化器进行负责和管理。SparkSQL架构图
SparkSQL的架构Spark要想很好地支持SQL,需要完成解析(Parser)、优化(Optimizer)、执行(Execution)三大过程。
SparkSQL的架构SqlParse:完成SQL语法解析功能,目前只提供了一个简单的SQL解析器。Analyze:主要完成绑定工作,将不同来源的UnresolvedLogicalPlan和元数据进行绑定,生成ResolvedLogicalPlan。Optimizer:对ResolvedLo;gicalPlan进行优化,生成OptimizedLogicalPlan。Planner:将LogicalPlan转换成PhysicalPlan。CostModel:主要根据过去的性能统计数据,选择最佳的物理执行计划。Catalyst优化器在执行计划生成和优化的工作时,离不开内部的五大组件。
SparkSQL的架构在了解了上述组件的作用后,下面分步骤讲解SparkSQL工作流程。
SparkSQL的架构SparkSQL工作流程:1下在解析SQL语句之前,会创建SparkSession,涉及到表名、字段名称和字段类型的元数据都将保存在SessionCatalog中;2当调用SparkSession的sql()方法时就会使用SparkSqlParser进行解析SQL语句,解析过程中使用的ANTLR进行词法解析和语法解析;3使用Analyzer分析器绑定逻辑计划,在该阶段,Analyzer会使用AnalyzerRules,并结合SessionCatalog,对未绑定的逻辑计划进行解析,生成已绑定的逻辑计划;
SparkSQL的架构4使用Optimizer优化器优化逻辑计划,该优化器同样定义了一套规则(Rules),利用这些规则对逻辑计划和语句进行迭代处理;5使用SparkPlanner对优化后的逻辑计划进行转换,生成可以执行的物理计划SparkPlan;6使用QueryExecution执行物理计划,此时则调用SparkPlan的execute()方法,返回RDDs。SparkSQL工作流程:
12小结知道SparkSQL的作用掌握SparkSQL的架构
通信数据分析与实战SparkSQL第四章第2节
14知道DataFrame和RDD的区别熟悉DataFrame的创建掌握DataFrame的常用操作学习目标TARGET
DataFrame的概述SparkSQL使用的数据对象并非是RDD,而是DataFrame。在Spark1.3.0版本之前,DataFrame被称为SchemaRDD。DataFrame使Spark具备处理大规模结构化数据的能力。在Spark中,DataFrame是一种以RDD为基础的分布式数据集。DataFrame的结构类似传统数据库的二维表