cesium加载倾斜优化_数据开发必经之路-数据倾斜

92c30e2692e98d466fb68a71d112e7cd.png

前沿

数据倾斜是数据开发中最常见的问题,同时也是面试中必问的一道题。那么何为数据倾斜?什么时候会出现数据倾斜?以及如何解决呢?

何为数据倾斜:数据倾斜其本质就是数据分配不均匀,部分任务处理大量的数据量导致整体job的执行时间拉长。

什么时候出现数据倾斜:无论是spark,还是mapreduce,数据倾斜大部分都是出现在shuffle阶段,也就是所谓的洗牌,由于使用的洗牌策略不一样,那么数据划分也就不一样,一般常用的也就是hash算法了。

基于上面两个问题的解答,对于数据倾斜的解决方案其本质就是如何把数据分配均匀

笔者认为根据优化策略可以分为业务层面的优化技术层面的优化

首先业务层面的优化就是结合实际的业务场景和数据特性进行优化,而技术层面的优化其本质就是对存储和计算两大组件的优化,然后根据不同的技术(hive,spark)使用不同的参数或者函数方法。

接下来将分别对这两种策略进行详细讲解

技术层面优化

Hive

这里讨论的是仍然是以mapreduce为底层引擎,hive on tez这种模式不做讲解,其优化思想还有参数大多数都是一样的。

1.参数优化

这里给出一些关于数据倾斜相关的参数配置,一般只能起到缓解的作用,不能完全解决倾斜问题。其中有些优化参数暂时未涉及(如map端,reduce端,jvm,压缩等有优化点)

2.Sql优化

数据倾斜出现的原因一方面是数据特性,另一方面是人为导致的,sql开发较粗糙导致的(占主要部分)。这里给出几个常见的sql倾斜的场景以及解决思路

2.1 Join优化

hive根据join key进行划分并发生shuffle,所以选用的key尽量分布均匀。目前出现的场景无非就是大表和小表关联,小表和小表关联(一般不会出现倾斜),大表和大表关联,这里针对这几种情况分别进行讲解

2.1.1 大表join小表-MapJoin

这里的大小表是相对来说的,如果一个A表数据量有1亿,而B表有1千万,那么B表就是一个小表。当B表中的key分布比较集中,那么在进行shuffle的时候就会有一个或者某几个reduce上的数据量较高于平均
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值