数据仓库-Hive调优和数据倾斜



一、Hive调优:

影响Hive效率的几乎从不是数据量过大,而是数据倾斜、数据冗余、job或I/O过多、MapReduce分配不合理等等

大的方向分存储优化和计算优化。

存储优化:

  1. 生命周期管理
  2. 定期盘点,无用数据删除
  3. 模型相似度检测
  4. 数据压缩
  5. 模型重构
  6. 优化分层

计算优化:

  1. 分区裁剪、列裁剪 、谓词下推(where谓词逻辑都尽可能提前执行,减少下游处理的数据量)
  2. 在UNION ALL内部尽可能不使用GROUP BY,改为在外层统一GROUP BY
  3. 尽量避免使用DISTINCT关键字,改为多套一层GROUP BY 即 先进行group by 再进行count 替换count(distinct)。但是这样写会启动两个MR job(单纯distinct只会启动一个),所以要确保数据量大到启动job的overhead远小于计算耗时,才考虑这种方法。
  4. 减少FULL OUTER JOIN 的使用,改为UNION ALL 
  5. 尽量少用 udf 和 transform脚本(这东西不好维护,能用sql实现就用sql)
  6. 开启combiner,map端预聚合 set hive.map.aggr,默认值true
  7. 合并小文件 小文件一多,会对NameNode的压力激增



二、数据倾斜:

数据倾斜:一大批数据分发到了一个reduce上,走到99% 不动了,形成性能瓶颈

形成原因:

  1. 关联键空值
  2. 数据分布不均匀

我们知道,join是数据倾斜的重灾区,常见的数据倾斜情况:

  1. 大小表关联,走map join,将小表在map端以hashtable的形式关联
  2. 大表和大表关联,空值引起的倾斜,过滤空key 或 随机打散
  3. 大表和大表关联,热点值引起的倾斜,分别计算热点数据和非热点数据,然后合并
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值