上一篇:一、對運行在YARN上的Spark進行性能調優
下一篇:三、Spark集群資源分配及并行度調優
1、使用mapPartitions或者mapPartitionWithIndex取代map操作
mapPartitions與map函式類似,只不過映射函式的引數由RDD的每個元素變成了RDD的每個磁區的迭代器,如果在映射程序中需要頻繁創建額外的物件,使用mapPartitions要比map函式高效,
mapPartitionWithIndex與mapPartitions基本相同,只是處理函式的引數是兩個,第一個是當前處理的磁區的index,第二個是當前處理的磁區元素組成的iterator,
2、使用foreachPartition把spark資料持久化到外部存盤介質
3、使用coalesce取代rePartition操作
repartition方法就是coalesce方法shuffle為True的情況,如果只是要減少父RDD的磁區數量,并且要設定的磁區數量變化不是很激烈的,則可以考慮直接使用coalesce方法來避免執行shuffle操作,以提高效率,
4、使用treeReduce取代reduce
treeReduce與treeAggregate類似,利用在Executor端進行多次Aggregate來縮小Driver的計算開銷,
5、使用treeAggregate取代aggregate
6、使用reduceByKey取代groupByKey
7、RDD的復用
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293124.html
標籤:其他
