Content here
前言
使用 Hive insert SQL 后查看 Yarn 发现其跑的是 MR 方式
这里想改用 Spark 引起来缩短 HiveQL 的响应时间
有两种方式
- SparkSQL
- Hive on Spark
两种方式都可以,看个人习惯
Hive on Spark 大体与 SparkSQL 结构类似,只是 SQL 引擎不同,但是计算引擎都是 Spark
本文主要介绍 Hive on Spark
实操
CDH Hive 配置中可以看到有官方的提示配置文档
要将 Hive 配置为在 Spark 上运行,请执行以下两个步骤
- 配置 Hive 依赖项为 Spark 服务
- 配置 Hive 客户端以使用 Spark 执行引擎
配置 Hive 依赖项为 Spark 服务
按照官方文档操作即可
- 在 Cloudera Manager 管理控制台中,转到 Hive 服务
- 单击配置选项卡
- 搜索 Spark On YARN 服务。要配置 Spark 服务,请选择 Spark 服务名称。要删除依赖项,请选择 none
- 点击保存更改。
- 进入Spark服务。
- 在 HiveServer2 所在的主机上添加 Spark 的 gateway 角色(即客户端)
- 重启 Hive、Spark 服务
配置 Hive 客户端以使用 Spark 执行引擎
CDH 中的 Hive 支持两个执行引擎: MapReduce 和 Spark
要配置执行引擎,请执行以下步骤之一
beeline/hive: 运行 set hive.execution.engine=engine
命令,engine 选项要么wei mr
要么为 spark
,
默认为 mr
1 | set hive.execution.engine=spark; |
Cloudera Manager(影响所有查询,不推荐):
- 转到 Hive 服务
- 单击配置选项卡
- 搜索 “execution”
- 将”Default Execution Engine”属性设置为 MapReduce 或 Spark。默认值为 MapReduce
- 重启 Hive 服务
优化
官方文档中提到性能
暂未研究,有兴趣的可以自行看看
参考链接