### 一、SparkSQL 和Hive对比
![](https://img.kancloud.cn/90/07/9007f62186e513bb9be331508d1ca4fd_903x500.png)
### 二、HiveSQL 和 SparkSQL 的对比
sql 生成 mapreduce 程序必要的过程:解析(Parser)、优化(Optimizer)、执行(Execution)
![](https://img.kancloud.cn/d6/a5/d6a5a72757e639bc359e806e51c47b47_1386x241.png)
### 三、hive、hive on spark、spark on hive 三者的比较
* **Hive 引擎包括:默认 MR、tez、spark**
* **Hive on Spark:Hive 既作为存储元数据又负责 SQL 的解析优化,语法是 HQL 语法,执行引擎变成了 Spark,Spark 负责采用 RDD 执行。**
* **Spark on Hive : Hive 只作为存储元数据,Spark 负责 SQL 解析优化,语法是 Spark SQL 语法,Spark 负责采用 RDD 执行。**
**【spark on hive 】**
hive 只作为存储角色,spark 负责 sql 解析优化,底层运行的还是 sparkRDD
具体可以理解为 spark 通过 sparkSQL 使用 hive 语句操作 hive 表,底层运行的还是 sparkRDD,
步骤如下:
1. 通过 sparkSQL,加载 Hive 的配置文件,获取 Hive 的元数据信息
2. 获取到 Hive 的元数据信息之后可以拿到 Hive 表的数据
3. 通过 sparkSQL 来操作 Hive 表中的数据
**【hive on spark】**
hive 既作为存储又负责 sql 的解析优化,spark 负责执行
这里 Hive 的执行引擎变成了 spark,不再是 MR。
这个实现较为麻烦,必须重新编译 spark 并导入相关 jar 包
目前大部分使用 spark on hive
- Introduction
- 快速上手
- Spark Shell
- 独立应用程序
- 开始翻滚吧!
- RDD编程基础
- 基础介绍
- 外部数据集
- RDD 操作
- 转换Transformations
- map与flatMap解析
- 动作Actions
- RDD持久化
- RDD容错机制
- 传递函数到 Spark
- 使用键值对
- RDD依赖关系与DAG
- 共享变量
- Spark Streaming
- 一个快速的例子
- 基本概念
- 关联
- 初始化StreamingContext
- 离散流
- 输入DStreams
- DStream中的转换
- DStream的输出操作
- 缓存或持久化
- Checkpointing
- 部署应用程序
- 监控应用程序
- 性能调优
- 减少批数据的执行时间
- 设置正确的批容量
- 内存调优
- 容错语义
- Spark SQL
- 概述
- SparkSQLvsHiveSQL
- 数据源
- RDDs
- parquet文件
- JSON数据集
- Hive表
- 数据源例子
- join操作
- 聚合操作
- 性能调优
- 其他
- Spark SQL数据类型
- 其它SQL接口
- 编写语言集成(Language-Integrated)的相关查询
- GraphX编程指南
- 开始
- 属性图
- 图操作符
- Pregel API
- 图构造者
- 部署
- 顶点和边RDDs
- 图算法
- 例子
- 更多文档
- 提交应用程序
- 独立运行Spark
- 在yarn上运行Spark
- Spark配置
- RDD 持久化