spark算子调优

本文介绍Spark性能优化的七大策略,包括使用mapPartitions减少JDBC连接次数,利用repartition和coalesce调整分区数量,采用repartitionAndSortWithinPartitions同时进行重分区和排序,运用treeReduce优化reduce操作,选择AggregateByKey替代groupByKey,以及合理使用cache和persist。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、mapPartitions代替map:map的输入变换函数应用于RDD中的每个元素,mapPartitions的输入函数应用每个分区。

eg:RDD的数据(10个元素,3个分区)通过JDBC连接写入数据库,map要做10次jdbc连接,mapPartitions只要三次

 

2、repartition=coalesce(true)

 

3、RDD使用filter如果partition数比较多,某些情况再使用coalesce减少分区数可以提高性能,因为partition比较多的情况每个task处理partition中的数据量比较少,造成资源浪费,coalesce后partition数减少,减少了处理的task,节省了时间

 

4、如果repartition重分区后还要排序,使用repartitionAndSortWithinPartitions,该算子可以一边进行重分区的shuffle操作,一边进行排序

 

5、treeReduce代替reduce:用于单个reduce操作开销比较大的情况,treeReduce可以通过调整深度来控制每次reduce的规模

 

6、AggregateBykey代替groupByKey

 

7、cache=persist(MEMORY_ONLY)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值