兼顾性能的数据倾斜处理方案

目录

前言

一、场景描述

二、常见的优化方法

2.1 Mapjoin

2.2 特殊值/空值打散

2.3 热点值打散,副表呈倍数扩散

2.4 热点数据单独处理/SkewJoin

2.5 方案总结

三、Distmapjoin

3.1 核心思路

3.2 代码实现

3.3 真实效果

四、方案总结

   文章主要是介绍在支付宝支付数据链路改造升级过程中,针对数据倾斜的优化实践方案,在解决数据倾斜问题的同时,还能兼顾更优的计算性能。

一、场景描述

  数据倾斜可能发生在join,group by,count distinct等环节,但本质上其实都类似,即因为数据重分发或重分布等原因,导致大部分数据仅分发到少数几个计算节点上。以ODPS场景为例,少数几个Fuxi Instance处理的数据量,远大于同一环节的其他Instance处理的数据量,并伴有明显的长尾现象。

  典型的案例是在淘宝双十一场景中,交易订单明细大表需要关联商家信息维表以补全商家信息,在数据关联处理中,同一个商家对应的交易订单个维表对应商家信息,将根据卖家ID shuffle至同一个数据处理节点上。由于TOP商家在大促中产生的交易单量远大于普通商家, 从而导致大量的数据集中到一台或者几台机器上计算,这些数据的计算速度将远远低于平均计算速度,导致整个计算过程被拖慢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值