HIVE常用优化方法「建议收藏」

HIVE常用优化方法「建议收藏」1、join连接时的优化:当三个或多个以上的表进行join操作时,如果每个on使用相同的字段连接时只会产生一个mapreduce。2、join连

大家好,欢迎来到IT知识分享网。

1、join连接时的优化:当三个或多个以上的表进行join操作时,如果每个on使用相同的字段连接时只会产生一个mapreduce。

2、join连接时的优化:当多个表进行查询时,从左到右表的大小顺序应该是从小到大。原因:hive在对每行记录操作时会把其他表先缓存起来,直到扫描最后的表进行计算

3、在where字句中增加分区过滤器。

4、当可以使用left semi join语法时不要使用inner join,前者效率更高。原因:对于左表中指定的一条记录,一旦在右表中找到立即停止扫描。

5、如果所有表中有一张表足够小,则可置于内存中,这样在和其他表进行连接的时候就能完成匹配,省略掉reduce过程。
设置属性即可实现,

set hive.auto.covert.join=true;

用户可以配置希望被优化的小表的大小
set hive.mapjoin.smalltable.sia=2500000;

如果需要使用这两个配置可置入$HOME/.hiverc文件中。

6、同一种数据的多种处理:从一个数据源产生的多个数据聚合,无需每次聚合都需要重新扫描一次。

例如:

insert overwrite table student select * from employee;

insert overwrite table person select * from employee;

可以优化成:

from employee

insert overwrite table student select *

insert overwrite table person select *

7、limit调优:limit语句通常是执行整个语句后返回部分结果。

Set hive.limit.optimia.enable=true;

8、开启并发执行。某个job任务中可能包含众多的阶段、其中某些阶段没有依赖关系可以并发执行,开启并发执行后job任务可以更快的完成。

设置属性:

set hive.e>ecparallel=true;

9、hive提供的严格模式,禁止3种情况下的查询模式。

a:当表为分区表时,where字句后没有分区字段和限制时,不允许执行。

b:当使用order by语句时,必须使用limit字段,因为order by只会产生一个reduce任务。

c:限制笛卡尔积的查询。

10、合理的设置map和reduce数量。

11、jvm重用。可在hadoop的mapredtite.xml中设置jvm®重用的次数。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/6207.html

(0)
上一篇 2022-12-17 14:50
下一篇 2022-12-17 15:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信