数仓面试常见问题:3.数据倾斜与处理

什么是数据倾斜?
数据倾斜(Data Skew)是指在分布式计算环境(如 Hive、Spark)中,数据在不同分区或节点上分布不均衡,导致部分任务执行时间过长,从而影响整体作业的性能。例如,在进行 GROUP BYJOIN 操作时,如果某些键的值过于集中,部分计算任务会比其他任务处理更多的数据,导致资源利用不均衡。

常见的数据倾斜处理方法:

方法 适用场景 优化思路
预处理数据 某些 key 数据过于集中,导致单个任务负载过重 预先过滤异常大 key,或拆分热点 key
增加 shuffle 并行度 reduce 任务执行时间过长 调整 mapreduce.job.reduces(Hive)或 spark.sql.shuffle.partitions(Spark)
使用 SALTING 进行 key 拆分 GROUP BYJOIN 产生数据倾斜 在 key 后添加随机前缀,使数据分布更均匀
使用 MAP-SIDE JOIN(Hive) 一张表小,另一张表大 让小表广播到所有计算节点,避免 shuffle
使用 BROADCAST JOIN(Spark) Spark 计算时,一张表较小 使用 broadcast() 方法广播小表,减少 shuff
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

piepis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值