第4章 Spark SQL结构化数据处理模块.pptx
第4章SparkSQL结构化数据处理模块
《Spark大数据分析与实战(第2版)》
熟悉DataFrame的基本概念,能够说明DataFrame与RDD在结构上的区别
了解SparkSQL,能够说出SparkSQL的特点
熟悉SparkSQL架构,能够说明Catalyst内部组件的运行流程
掌握DataFrame的常用操作,能够使用DSL风格和SQL风格操作DataFrame
掌握DataFrame的创建,能够通过读取文件创建DataFrame
学习目标/Target
了解Dataset,能够说明RDD、DataFrame与Dataset的区别
掌握DataFrame的函数操作,能够通过标量函数和聚合函数操作DataFrame
掌握Dataset的创建,能够通过读取文件创建Dataset
掌握RDD与DataFrame的转换,能够通过反射机制和编程方式将RDD转换成DataFrame
掌握SparkSQL操作数据源,能够使用SparkSQL操作MySQL和Hive
学习目标/Target
对于那些对Scala语言和Spark常用API不了解,但希望能够利用Spark框架强大数
据分析能力的用户,Spark提供了一种结构化数据处理模块SparkSQL,SparkSQL模块使用户可以利用SQL语句处理结构化数据。本章将针对SparkSQL的基本原理和使用方式进行详细讲解。
章节概述/Summary
SparkSQL的基础知识
DataFrame的基础知识
RDD转换为DataFrame
Dataset的基础知识
SparkSQL操作数据源
3
01
02
03
04
05
目录/Contents
③
SparkSQL的基础知识
4.1
SparkSQL是Spark用来处理结构化数据的一个模块,它提供
了一个名为DataFrame的数据模型,即带有元数据信息的RDD。作为分布式SQL查询引擎,SparkSQL使用户可以通过SQL、DataFrameAPI和DatasetAPI3种方式实现对结构化数据的处理。无论用户选择哪种方式,它们都是基于同样的运行引擎,可以方便地在不同方式之间进行切换。
4.1SparkSQL的基础知识
4.1.1SparkSQL的简介
学习目标
了解SparkSQL,能够说出
SparkSQL的特点。
SparkSQL的前身是Shark,Shark最初是由加州大学伯克利分校的实验室开发的Spark生态系
统的组件之一,它运行在Spark系统上,并且重新利用了Hive的工作机制,并继承了Hive的各个组件。Shark主要的改变是将SQL语句的转换方式从MapReduce作业替换成了Spark作业,这样的改变提高了计算效率。
然而,由于Shark过于依赖Hive,所以在版本迭代时很难添加新的优化策略,从而限制了
Spark的发展,因此,在后续的迭代更新中,Shark的维护停止了,转向SparkSQL的开发。
SparkSQL主要提供了3个功能。
支持多种数据源
支持标准连接
支持无缝继承
4.1.1SparkSQL的简介
4.1.2SparkSQL架构
学习目标
熟悉SparkSQL架构,能够说明
Catalyst内部组件的运行流程。
SparkSQL的一个重要特点就是能够统一处理数据表和RDD,使得用户可以轻松的使用SQL语句进行外部查询,同时进行更加复杂的数据分析。
4.1.2SparkSQL架构
CatalystRDDCluster
Catalyst内部主要包括Parser(分析)组件、Analyzer(解析)组件、Optimizer(优化)组件、Planner(计划)组件和QueryExecution(执行)组件。
4.1.2SparkSQL架构
SQL语句
DataFrame
AnalyzerOptimizer
OptimizedLogicalPlan
PhysicalPlanCostModel
Cache
Manager
LogicalPlan
Planner
RDD
当用户提交SQL语句、DataFrame或Dataset时,它们会经过Parser组件进行分析。Parser组件分析相关的执行语句,判断其是否符合规范,一旦分析完成,会创建SparkSession,并将元数据保存在