一、SparkSQL介绍
Hive是Shark的前身,Shark是SparkSQL的前身,SparkSQL产生的根本原因是其完全脱离了Hive的限制。
1.spark sql的特点
1)引入了新的RDD类型SchemaRDD,可以像传统数据库定义表一样来定义SchemaRDD。
2)在应用程序中可以混合使用不同来源的数据,如可以将来自HiveQL的数据和来自SQL的数据进行Join操作。
3)内嵌了查询优化框架,在把SQL解析成逻辑执行计划之后,最后变成RDD的计算。
2.spark sql的种类
Spark on Hive: Hive只作为储存角色,Spark负责sql解析优化,执行。
Hive on Spark:Hive即作为存储又负责sql的解析优化,Spark负责执行。
3. Dataset与DataFrame
1)Dataset是一个分布式数据容器,与RDD类似。除了数据以外,还掌握数据的结构信息即schema,Dataset的底层封装的是RDD。
通过org.apache.spark.sql.SparkSession来创建Spark上下文
SparkSession中有很多封装好的方法可以来读取文件、创建DataSet,甚至是直接用来写sql语句
Dataset.registerTempTable("表名")可以将DataSet转化成一张临时表,便于sql语句查询
2)Dataset<Row> = DataFrame
4.SparkSQL的底层架构
提交sql——>解析一批未被解决的逻辑计划——>分析后的逻辑计划——>优化规则(谓词