美文网首页
Hive调优

Hive调优

作者: 林海畅游 | 来源:发表于2020-07-07 13:48 被阅读0次
1. limit 语句快速出结果

一般情况下,Limit语句还是需要执行整个查询语句,然后再返回部分结果。

有一个配置属性可以开启,避免这种情况---对数据源进行抽样

hive.limit.optimize.enable=true --- 开启对数据源进行采样的功能

hive.limit.row.max.size --- 设置最小的采样容量

hive.limit.optimize.limit.file --- 设置最大的采样样本数

缺点:有可能部分数据永远不会被处理到
2.并行执行
set hive.exec.parallel=true,可以开启并发执行
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; -- 执行前进行小文件合并 2)增加map数

3.执行顺序

3.1 sql语句定义顺序

(1) SELECT (2)DISTINCT <select_list>
(3)FROM <left_table>
(4)<join_type> JOIN <right_table>
(5)    ON <join_condition>
(6) WHERE <where_condition>
(7) GROUP BY <group_by_list>
(8) WITH {CUBE| ROLLUP}
(9) HAVING <having_condition>
(10) ORDER BY <order_by_condition>
(11) LIMIT <limit_number>

3.2 实际执行顺序

(1)FROM <left_table>
(2)ON <join_condition>
(3)<join_type> JOIN <right_table>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH {CUBE| ROLLUP}
(7)HAVING <having_condition>
(8) SELECT 
(9)DISTINCT <select_list>
(10)ORDER BY <order_by_condition>
(11)LIMIT <limit_number>

可以看到,一共有十一个步骤,最先执行的是FROM操作,最后执行的是LIMIT操作。每个操作都会产生一个虚拟表,该虚拟表作为一个处理的输入,看下执行顺序:

(1) FROM:对FROM子句中的左表<left_table>和右表<right_table>执行笛卡儿积,产生虚拟表VT1;
(2) ON: 对虚拟表VT1进行ON筛选,只有那些符合<join_condition>的行才被插入虚拟表VT2;
(3) JOIN: 如果指定了OUTER JOIN(如LEFT OUTER JOIN、RIGHT OUTER JOIN),那么保留表中未匹配的行作为外部行添加到虚拟表VT2,产生虚拟表VT3。如果FROM子句包含两个以上的表,则对上一个连接生成的结果表VT3和下一个表重复执行步骤1~步骤3,直到处理完所有的表;
(4) WHERE: 对虚拟表VT3应用WHERE过滤条件,只有符合<where_condition>的记录才会被插入虚拟表VT4;
(5) GROUP By: 根据GROUP BY子句中的列,对VT4中的记录进行分组操作,产生VT5;
(6) CUBE|ROllUP: 对VT5进行CUBE或ROLLUP操作,产生表VT6;
(7) HAVING: 对虚拟表VT6应用HAVING过滤器,只有符合<having_condition>的记录才会被插入到VT7;
(8) SELECT: 第二次执行SELECT操作,选择指定的列,插入到虚拟表VT8中;
(9) DISTINCT: 去除重复,产生虚拟表VT9;
(10) ORDER BY: 将虚拟表VT9中的记录按照<order_by_list>进行排序操作,产生虚拟表VT10;
(11) LIMIT: 取出指定街行的记录,产生虚拟表VT11,并返回给查询用户

https://www.iteye.com/blog/daizj-2289981

相关文章

  • Hive 调优总结,让 Hive 调优想法不再碎片化

    通过阅读比较多的 Hive 调优材料,并根据自己的实践,总结 Hive 调优如下,让 Hive 调优想法不再凌乱、...

  • hive调优实战系列文章-hive调优和问题排查思路

    本文将介绍Hive调优的整体过程,以及本人对Hive调优过程的一些思考,包括Hive调优的一般步骤,和调优方法。 ...

  • Hive ETL 优化(参数篇)

    Hive 调优-参数篇 <** 工作中常用的 hive 参数调优,整理如下。 原则: 最少数据 最少字段 最少Jo...

  • hive调优

    1,参数调优 hive.map.aggr = true hive.groupby.skewindata =tr...

  • Hive调优

    1.使用explain 和 explain extended 2.限制调整 limit 在使用Limit 时只输...

  • Hive 调优

    列出调优参数列表 具体可参考https://www.cnblogs.com/xd502djj/p/3799432....

  • Hive调优

    Fetch抓取(Hive可以避免进行MapReduce)Hive中对某些情况的查询可以不必使用MapReduce计...

  • HIVE 调优

    1. Fetch抓取 Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SE...

  • Hive调优

    1、Fetch 抓取 Fetch 抓取是指,Hive 中对某些情况的查询可以不必使用 MapReduce 计算。例...

  • Hive调优

    10.hive调优 10.1 Fetch抓取 Hive中对某些情况的查询可以不必使用MapReduce计算。例如:...

网友评论

      本文标题:Hive调优

      本文链接:https://www.haomeiwen.com/subject/lzbuzqtx.html