#博学谷IT学习技术支持#
第一章 快速入门
1.1 什么是SparkSQL

SparkSQL 是Spark的一个模块, 用于处理海量结构化数据

第一、针对结构化数据处理,属于Spark框架一个部分

第二、抽象数据结构:DataFrame
DataFrame = RDD + Schema信息;
第三、分布式SQL引擎,类似Hive框架
从Hive框架继承而来,Hive中提供bin/hive交互式SQL命令行及HiveServer2服务,SparkSQL都可以;
Spark SQL模块架构示意图如下

备注:Catalog就是Spark 2.0之后提供的访问元数据的类:Catalog提供一些API用来对数据库、表、视图、缓存、列、函数(UDF/UDAF)进行操作
1.2 为什么要学习SparkSQL

由于MapReduce这种计算模型执行效率比较慢,rdd原生代码较为复杂,所以Spark SQL应运而生,它是将Spark SQL转换成RDD,然后提交到集群中去运行,执行效率非常快!(查看官网学习)
SparkSQL是非常成熟的 海量结构化数据处理框架.
学习SparkSQL主要在2个点:
SparkSQL本身十分优秀, 支持SQL语言\性能强\可以自动优化\API简单\兼容HIVE等等
企业大面积在使用SparkSQL处理业务数据
离线开发
数仓搭建
科学计算、数据分析
1.3 SparkSQL特点


1)用户接口:Client
CLI(command-line interface)、JDBC/ODBC(jdbc 访问 hive)、WEBUI(浏览器访问 hive)
2)元数据:Metastore
元数据包括:表名、表所属的数据库(默认是 default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;
默认存储在自带的 derby 数据库中,推荐使用 MySQL 存储 Metastore
3)Hadoop
使用 HDFS 进行存储,使用 MapReduce 进行计算。
4)驱动器:Driver
5)解析器(SQL Parser)
将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第三方工具库完成,比如 antlr;
对 AST 进行语法分析,比如表是否存在、字段是否存在、SQL 语义是否有误。
6)编译器(Physical Plan)
将