spark优化

一、算子方面:
高性能的算子
1、使用mapPartitions替代map。
mapPartitions:处理一个partition所有的数据,可能会出现OOM;
2、使用foreachPartitions替代foreach;
3、 使用repartitionAndSortWithinPartitions替代repartition与sort类操作;
4、 使用filter之后进行coalesce操作;

避免shuffle类算子
shuffle类算子:repartition、repartitionAndSortWithinPartitions、coalesce、reduceByKey、groupByKey、sortByKey 、join、cogroup

二、RDD 方面:
1、 RDD复用
2、RDD的持久化

三、广播大变量
广播变量:需要在算子函数中使用外部变量
广播后的变量会在每个executor的内存中,只保留一份变量副本,而executor中的task执行时共享该executor中的那份变量副本。

四、kryo优化序列化
spark.serializer = org.apache.spark.serializer.KryoSerializer

五、优化数据结构
字符串替代对象;
使用原始类型替代字符串;
使用数组替代集合类型。

六、分配合理资源
提交任务时指定core和内存

七、设置合理并行度
task数量设置成 App的总cpu核数的2~3 倍

八、JVM调优

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值