1、Fetch模式(避免生成mapreduce任务),set hive.fetch.task.conversion=more;查全表、按列查、limit都符合
2、本地模式
3、开启map join,并且设置大小表的阈值
4、开启map端聚合,有数据倾斜时进行负载均衡,set hive.groupby.skewindata = true;
5、使用count(distinct)时用先group by再count()代替
6、严格模式,避免全表扫描(要加过滤条件,如分区),order by要加上limit(因为order by为了执行排序过程会将所有的结果数据分发到同一个Reducer中进行处理),限制笛卡尔积
7、JVM重用,JVM重用可以使得JVM实例在同一个job中重新使用N次,N的值可以在Hadoop的mapred-site.xml文件中进行配置,我们也可以在hive当中通过 set mapred.job.reuse.jvm.num.tasks=10;
8、推测执行, 根据一定的法则推测出“拖后腿”的任务,并为这样的任务启动一个备份任务,让该任务与原始任务同时处理同一份数据,并最终选用最先成功运行完成任务的计算结果作为最终结果。如果用户对于运行时的偏差非常敏感的话,那么可以将这些功能关闭掉。如果用户因为输入数据量很大而需要执行长时间的map或者Reduce
hive优化
最新推荐文章于 2023-09-01 17:55:08 发布