Spark调优补充录第三篇

Spark调优第二篇

1 避免使用重复RDD,多次使用的RDD可以持久化复用

2 避免使用Shuffle类算子

shuffle类算子效率低(网络传输,下一轮节点内存不足落磁盘导致增加io读写等),还可能产生数据倾斜
故避免使用:redcueByKey,join,distinct,repartition等shuffle算子。尽量使用map类非shuffle算子

解决方法 mapjoin:
	1 使用位图/位运算
	2 广播 mapjoin

位图法使用实例
在这里插入图片描述

3 使用Map-Side预聚合的shuffle操作

例如reduceByKey/aggregateByKey代替groupByKey

4 使用高性能算子

1 shuffle前预聚合
	reduceByKey/aggregateByKey代替groupByKey
2 使用foreachPartition/mapPartition代替map
	例如当连接数据库时,使用map rdd内所有数据都需要访问一次数据库压力太大
	改成mapPartition每个分区读取只一次数据库即可,然后改方法内再加入map算子做数据逻辑操作。再+数据库连接池
3 使用filter后使用coalesce
	filter数据过滤后再coalesce合并数据。
	例如100个分区每个分区10G,过滤后每个分区1G,则合并位10个分区。资源利用率则提高10倍
4 使用repartitionAndSortWithPartitions代替repartition和sort类操作
	边shuffle边排序,而不是shuffle完了再排序

5 Kryo优化序列化

对象头信息只序列化一次,对象体有多少个对象序列化多少次

6 优化数据结构

字符串代替对象
原始类型代替字符串
数组代替集合类型

mapjoin和combiner能用则用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我爱肉肉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值