hive调优之group by

1、设置map端聚合(默认我true)
set hive.map.aggr=true;
2、在map端设置进行聚合的条数数目
set hive.groupby.mapaggr.checkinterval= 数据条数
3 、开启负载均衡
set hive.groupby.skewindata=true;

### Hive 性能的最佳实践 #### 合理设置执行引擎 为了提升Hive查询的执行效率,可以选择更高效的执行引擎。`hive.execution.engine` 参数决定了使用的执行框架,在处理大规模数据集时推荐采用Tez作为执行引擎[^4]。 ```sql SET hive.execution.engine=tez; ``` 这有助于充分利用集群资源,加速复杂查询过程中的计算任务完成速度。 #### 更新统计信息 利用 `ALTER TABLE` 命令维护表结构的同时也应关注统计数据的准确性。精确的元数据可以帮助Hive编译器构建最查询计划,进而改善整体性能表现[^1]。 ```sql ANALYZE TABLE table_name COMPUTE STATISTICS; ``` 此命令用于收集有关整个表格的信息;对于分区表,则可通过指定具体分区来获取相应部分的数据特征: ```sql ANALYZE TABLE table_name PARTITION (partition_spec) COMPUTE STATISTICS; ``` #### 维护最新分区信息 针对含有大量分区的大规模分布式存储环境而言,保持最新的分区列表至关重要。定期执行 `MSCK REPAIR TABLE` 可确保新增加或修改过的分区被正确识别并加入到现有架构之中。 ```sql MSCK REPAIR TABLE table_name; ``` #### 减少小文件数量 过多的小型文件会对I/O造成压力,影响读取速率。借助于 `COMPACT` 或者 `OPTIMIZE` 操作可以有效地合并零碎文件片段,降低磁盘访问频率,增强吞吐量。 ```sql ALTER TABLE table_name COMPACT 'MAJOR'; -- OR -- OPTIMIZE table_name ZORDER BY column_list; ``` ZOrdering是一种特别有效的技术,它不仅减少了不必要的Shuffle操作次数,而且还能促进更好的压缩效果。 #### 单次扫描多用途 当面对同一张表需实施多项独立却又相互关联的操作需求时,尽可能尝试一次性完成全部工作流程而非分批逐步推进。这样做的好处是可以节省重复加载相同数据所带来的开销成本,提高总体工作效率[^5]。 例如,可以在同一个CTAS(Create Table As Select)语句里实现过滤、转换以及汇总等多项逻辑运算: ```sql CREATE TABLE new_table AS SELECT * FROM source_table WHERE condition GROUP BY group_columns HAVING having_condition; ``` #### 数据倾斜处理策略 遇到因键分布不均而导致的部分节点负载过重情况时,可以通过整Join方式(如Map Join)、增加广播变量或是重新分配Key等方式缓解此类现象带来的负面影响。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值