Hive企业级调优[4]——HQL语法优化之分组聚合优化

HQL语法优化之分组聚合优化

优化说明

在 Hive 中,未经优化的分组聚合通常通过一个 MapReduce Job 实现。Map 端负责读取数据,并按分组字段进行分区,通过 Shuffle 将数据发送至 Reduce 端,在 Reduce 端完成最终的聚合运算。

Hive 对分组聚合的优化主要是为了减少 Shuffle 数据量,具体做法是采用 map-side 聚合。所谓 map-side 聚合,就是在 Map 端维护一个哈希表,利用它来完成部分聚合,然后将部分聚合的结果按照分组字段分区,发送至 Reduce 端以完成最终的聚合。这种方法能够有效地减少 Shuffle 的数据量,从而提高分组聚合运算的效率。

与 map-side 聚合相关的参数包括:

  • 启用 map-side 聚合

    sql 复制代码
    set hive.map.aggr=true;
  • 检测源表数据是否适合进行 map-side 聚合

    • 检测方法是:先对若干条数据进行 map-side 聚合,若聚合后的条数和聚合前的条数比值小于设定值,则认为该表适合进行 map-side 聚合;
    • 否则,认为该表数据不适合进行 map-side 聚合,后续数据便不再进行 map-side 聚合。
    sql 复制代码
    set hive.map.aggr.hash.min.reduction=0.5;
  • 用于检测源表是否适合 map-side 聚合的条数

    sql 复制代码
    set hive.groupby.mapaggr.checkinterval=100000;
  • map-side 聚合所用的哈希表占用 map task 堆内存的最大比例

    • 若超出此值,则会对哈希表进行一次 flush。
    sql 复制代码
    set hive.map.aggr.hash.force.flush.memory.threshold=0.9;
优化案例

1)示例 SQL:

sql 复制代码
hive (default)> 
select
    product_id,
    count(*)
from order_detail
group by product_id;

2)优化前 未经优化的分组聚合,执行计划如下图所示:(实际图形无法在此文本中展示,请参考执行计划输出结果)

3)优化思路 可以考虑开启 map-side 聚合,配置以下参数:

sql 复制代码
-- 启用 map-side 聚合,默认是 true
set hive.map.aggr=true;

-- 用于检测源表数据是否适合进行 map-side 聚合。检测的方法是:先对若干条数据进行 map-side 聚合,若聚合后的条数和聚合前的条数比值小于该值,则认为该表适合进行 map-side 聚合;否则,认为该表数据不适合进行 map-side 聚合,后续数据便不再进行 map-side 聚合。
set hive.map.aggr.hash.min.reduction=0.5;

-- 用于检测源表是否适合 map-side 聚合的条数。
set hive.groupby.mapaggr.checkinterval=100000;

-- map-side 聚合所用的哈希表,占用 map task 堆内存的最大比例,若超出该值,则会对哈希表进行一次 flush。
set hive.map.aggr.hash.force.flush.memory.threshold=0.9;

优化后的执行计划如图所示:(同样,实际图形需通过执行 EXPLAIN 命令获得)

相关推荐
wheelerer3 小时前
企业营销的隐形门槛:当规则成为第一道城墙
大数据·营销·流量营销
跨境猫小妹3 小时前
亚马逊合规新纪元:隐形战场里,谁在悄悄出局?
大数据·人工智能·产品运营·跨境电商·防关联
玄微云4 小时前
AI智能体开发公司推荐:玄微科技专注垂直场景的实践者
大数据·人工智能·软件需求
数据智研5 小时前
【数据分享】腾格里沙漠空间矢量范围
大数据·信息可视化·数据分析
智能化咨询6 小时前
(68页PPT)埃森哲XX集团用户主数据治理项目汇报方案(附下载方式)
大数据·人工智能
数据智研6 小时前
【数据分享】毛乌素沙地(毛乌素沙漠)空间矢量范围
大数据·人工智能·信息可视化·数据分析
TinpeaV6 小时前
Elasticsearch8(ES)保姆级菜鸟入门教程
大数据·spring boot·elasticsearch·搜索引擎·全文检索·postman
专注数据的痴汉7 小时前
「数据获取」江门统计年鉴(1997-2024)
大数据·人工智能·信息可视化
小王毕业啦7 小时前
2000-2023年 地级市-公路运输相关数据
大数据·人工智能·数据挖掘·数据分析·数据统计·社科数据·实证数据
Element_南笙7 小时前
吴恩达新课程:Agentic AI(笔记11)
大数据·人工智能·笔记·算法·机器学习