hive 核心思想:
把 Hive SQL 当做 Mapreduce 程序去优化。
以下 SQL 不会转为 Mapreduce 来执行:
select 仅查询本表字段; where 仅对本表字段做条件过滤。
explain 命令可以显示执行计划:
EXPLAIN [EXTENDED] query; EXTENDED 可以看到更详细 的信息。
本地模式提高执行效率
本地模式:
mapreduce 任务运行在一台节点上,该节点把需要的资源从其他机器 copy 过来
集群模式:
mapreduce 任务在 hadoop 集群中执行 开启本地模式:
set hive.exec.mode.local.auto=true;
注意:
hive.exec.mode.local.auto.inputbytes.max 默认值为 128M,表示加载文件的最大值,若 大于该配置仍会以集群方式来运行
查询的数据在数据量不大的表中,这种情况使用本地模式,数据量大时使用集群模式
并行计算
hive 执行 sql 默认是顺序执行,如下 sql 如果使用并行计算会大大提高效率,但是集群 压力也增大:
select wc.col1,bk.col2 from
(select count(*) as col1 from wordcount) wc,
(select count(*) as col2 from bucket) bk;
两条子查询可以使用并行计算
通过设置以下参数开启并行模式: