Spark优化有哪些

1、避免创建重复的RDD
2、尽可能复⽤同⼀个RDD
3、对多次使⽤的RDD进⾏持久化
4、尽量避免使⽤shuffle类算⼦
5、使⽤map-sid预聚合的shuffle操作
        所谓的map-side预聚合,说的是在每个节点本地对相同的key进⾏⼀次聚合操作,类似MapReduce中的本地combiner。map-side预聚合之后,每个节点本地就只会有⼀条相同的key,因为多条相同的key都被聚合起来了。其他节点在拉取所有节点上的相同key时,就会⼤⼤减少需要拉取的数据数量,从⽽也就减少了磁盘IO以及⽹络传输开销。如reduceByKey或者aggregateByKey代替groupByKey。
6、使⽤⾼性能算⼦
⽐如使⽤reduceByKey/aggregateByKey替代groupByKey
使⽤mapPartitions替代普通map
使⽤foreachPartitions替代foreach
使⽤filter之后进⾏coalesce操作
7、⼴播⼤变量
有时在开发过程中,会遇到需要在算⼦函数中使⽤外部变量的场景(尤其是⼤变量,⽐如100M以上的⼤集合),那么此时就应该使⽤Spark的⼴播(Broadcast)功能来提升性能。
8、调整参数
⽐如num-executors,executor-memory,executor-cores,driver-memory 等参数
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值