Spark效能優化 優化資料結構

2021-08-29 00:14:42 字數 1133 閱讀 2384

1、優先使用陣列以及字串,而不是集合類。也就是說,優先用array,而不是arraylist、linkedlist、hashmap等集合。

比如,有個list list = new arraylist(),將其替換為int arr = new int。這樣的話,array既比list少了額外資訊的儲存開銷,還能使用原始資料型別(int)來儲存資料,比list中用integer這種包裝型別儲存資料,要節省記憶體的多。

還比如,通常企業級應用中的做法是,對於hashmap、list這種資料,統一用string拼接成特殊格式的字串,

比如mappersons = new hashmap()。可以優化為,特殊的字串格式:id:name,address|id:name,address...。
2、避免使用多層巢狀的物件結構。比如說,

public class teacher 。
就是非常不好的例子。因為teacher類的內部又巢狀了大量的小student物件。

比如說,對於上述例子,也完全可以使用特殊的字串來進行資料的儲存。比如,用json字串來儲存資料,就是乙個很好的選擇。

,]}
例如mapreduce程式:

context.write(new text(key),new person());

person p1 = new person(1,"zahngsan")

string str = json.tojson(p1)

context.write(new text(key),str)

3、對於有些能夠避免的場景,盡量使用int替代string。因為string雖然比arraylist、hashmap等資料結構高效多了,占用記憶體量少多了,但是之前分析過,還是有額外資訊的消耗。比如之前用string表示id,那麼現在完全可以用數字型別的int,來進行替代。這裡提醒,在spark應用中,id就不要用常用的uuid了,因為無法轉成int,就用自增的int型別的id即可。(sdfsdfdf-234242342-sdfsfsfdfd)

spark優化之資料結構

1 優先使用陣列以及字串,而不是集合類。也就是說,優先用array,而不是arraylist linkedlist hashmap等集合。比如,有個listlist new arraylist 將其替換為int arr new int。這樣的話,array既比list少了額外資訊的儲存開銷,還能使用...

Android效能優化 資料結構的優化

android效能優化包含很多方面,今天我們來看看對於資料結構如何做優化。1.集合的遍歷操作 private void for1 arraylistlist long end system.currenttimemillis log.d tag,for1 spend end start ms pri...

spark效能優化

熟悉spark核心之後,深刻體會到了spark開發中存在著大量細節左右著計算效能。趁著剛看過大概的流程,先基於目前的感受和相關資料,總結一下可能存在優化空間的地方。spark優化其實就是將不必要的開銷能省就省。建立rdd是昂貴的,從磁碟讀取rdd也是昂貴的,需要大量的io開銷,shuffle是與基於...