1. 程式人生 > >Spark效能調優---fastutil優化資料格式

Spark效能調優---fastutil優化資料格式

Spark中應用fastutil的場景:

1、如果運算元函式使用了外部變數;那麼第一,你可以使用Broadcast廣播變數優化;第二,可以使用Kryo序列化類庫,提升序列化效能和效率;第三,如果外部變數是某種比較大的集合,那麼可以考慮使用fastutil改寫外部變數,首先從源頭上就減少記憶體的佔用,通過廣播變數進一步減少記憶體佔用,再通過Kryo序列化類庫進一步減少記憶體佔用。

2、在你的運算元函式裡,也就是task要執行的計算邏輯裡面,如果有邏輯中,出現,要建立比較大的Map、List等集合,可能會佔用較大的記憶體空間,而且可能涉及到消耗效能的遍歷、存取等集合操作;那麼此時,可以考慮將這些集合型別使用fastutil類庫重寫,使用了fastutil集合類以後,就可以在一定程度上,減少task創建出來的集合型別的記憶體佔用。避免executor記憶體頻繁佔滿,頻繁喚起GC,導致效能下降。

fastutil的使用

第一步:在pom.xml中引用fastutil的包

<dependency>
    <groupId>fastutil</groupId>
    <artifactId>fastutil</artifactId>
    <version>5.0.9</version>
</dependency>

 List<Integer> => IntList 基本都是類似於IntList的格式,字首就是集合的元素型別;特殊的就是Map,Int2IntMap,代表了key-value對映的元素型別。除此之外,剛才也看到了,還支援object、reference。

fastutil官網:http://fastutil.di.unimi.it/docs/overview-summary.html