大表关联大表倾斜(100亿 join 50亿)

昨晚有同学提到面试中问大表关联怎么调优(100亿 join 50亿,无聚合函数) 前置判断:需要判断两张表关联键是否是1对多、1对1,如果a、b表是多对多还是会倾斜 分析误区:加盐/打散,题目中只是提到将两张表进行关联,因此这里无论是加随机数还是、取模都是无效的(因为关联不到一起) 分析思路: (1)map端减少输入:通过on中过滤及谓词下推可限制关联表数据,例如过滤时间、过滤枚举、限制分区 (2)大key拆解:可以写sql by维度找到热点key分布,可以按照维度(例如一级类目、场景,但要保障相同)进行拆表,分批插入目标表(目标表也可以根据大维度去做二级分区,或者先做一个临时表也行) (3)预聚合:例如关联表是单事务日志(状态变化便产生一条数据),可进行预聚合,多条取最新数据,聚合后再进行关联 (4)分区:重分区加task,distribute by,保障分区数据均匀,增加多任务去分担压力, 只能作为缓解,治标不治本 (5)参数:常用还是 SET spark.sql.adaptive.skewJoin.enabled=true;(join负载均衡) SET spark.sql.autoBroadcastJoinThreshold=10485760;(广播) SET spark.sql.shuffle.partitions=2000;(shuffle并行)sparkjava

#数据分析##数据人offer决赛圈怎么选##数据人的面试交流地##你今年的平均薪资是多少?##牛客创作赏金赛#
全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
秋招吐槽大会
点赞 评论 收藏
分享
10-29 11:31
吉林大学 Java
后端转后厨_:后端就是个**
点赞 评论 收藏
分享
12-14 22:54
武汉大学 Java
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务