前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HQL数据倾斜解决方法总结

HQL数据倾斜解决方法总结

原创
作者头像
陈章乐
修改2020-08-20 18:07:04
6100
修改2020-08-20 18:07:04
举报
文章被收录于专栏:数据分析之旅数据分析之旅

近来,求职数据分析师常被问到:数据倾斜如何调优?对于经常使用HQL处理大数据的同学,这个问题并不陌生:任务进度长时间维持在99%,而查看监控页面,会发现只有某几个reduce子任务尚未完成,十分诡异。

要解决数据倾斜这个问题,我们需要先了解下数据倾斜产生的原因是什么?一般由于以下三个操作:

count(distinct *), group by , join引起的,导致某个reducer处理的数据过多引起处理时间非常耗时。

因此解决调优的方式可以从3方面入手尝试:

1. 数据层面

  • 有损方法:找到异常数据,符合业务场景的前提下,直接过滤
  • 无损方法:对分布不均匀的数据,先对key做一层hash,先将数据打散增大并行度,再汇聚

2. 代码方面:

  • 使用sum() group by 替代coun(distinct )
  • 显式使用mapjoin:/*+mapjoin(x)*/
  • 避免多表同时join,使用临时中间表过渡

3. 参数方面:

  • 负载均衡:hive.groupby.skewindata=true
  • map端聚合:hive.map.aggr = true
  • 增加reduce 个数: hive.exec.reducer.max = / mapred.reduce.tasks =
  • 采用压缩:hive.exec.compress.output = true /mapredu.output.compress = true (这个方式不完全是解决数据倾斜问题,减少IO读写和网络传输,提高效率)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档