多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 一、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