Hive调优

本文主要探讨了Hive的性能调优方法,包括使用Fetch减少MapReduce操作、启用本地模式加速小数据集处理、优化聚合操作以平衡数据倾斜、解决Count(distinct)大数据量问题、避免笛卡尔积、理解推测执行的工作原理以及启用并行执行和严格模式来提高效率。通过这些策略,可以显著提升Hive查询的执行速度和集群资源利用。
摘要由CSDN通过智能技术生成

Fetch

Hive中对某些情况的查询不必使用mapreduce,一些简单的查询,hive可以读取存储目录下的文件,然后输出查询结果到控制台,通过参数声明设置fetch参数,可以控制查询是否走mapreduce

set hive.fetch.task.conversion=none;//走mapreduce程序
set hive.fetch.task.conversion=more;//不走mapreduce

本地模式

大多数的job是需要hadoop提供完整的可扩展性来处理大数据集,不过有时候hive的输入数据非常小,在这种情况下,为查询触发执行任务时消耗的时间比实际的job的执行时间更多,因此可以通过本地模式在单台机器上处理所有的任务,对小数据集,可以明显的缩短执行时间

set hive.exec.model.local.auto=true;//开启本地模式
set hive.exec.model.local.auto=false;//关闭本地模式

聚合

默认情况下,map阶段同一key数据会分发给一个reduce,当一个key数据过大的时候就会发生数据倾斜,并不是所有的聚合操作都需要在reduce阶段完成,很多聚合操作可以现在map段进行部分聚合,最后在reduce阶段得出最终的结果

是否在map阶段进行聚合,默认为true

set hive.map.aggr=true;

在map阶段进行聚合操作的条目的数目

set hive.groupby.mapaggr.checkinterval=10000;

有数据倾斜的时候进行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值