您好,登錄后才能下訂單哦!
第一,RDD架構重構與優化
盡量去復用RDD,差不多的RDD,可以抽取稱為一個共同的RDD,供后面的RDD計算時,反復使用。
第二,公共RDD一定要實現持久化
對于要多次計算和使用的公共RDD,一定要進行持久化。
持久化,也就是說,將RDD的數據緩存到內存中/磁盤中,(BlockManager),以后無論對這個RDD做多少次計算,那么都是直接取這個RDD的持久化的數據,比如從內存中或者磁盤中,直接提取一份數據。
第三,持久化,是可以進行序列化的
如果正常將數據持久化在內存中,那么可能會導致內存的占用過大,這樣的話,也許,會導致OOM內存溢出。
當純內存無法支撐公共RDD數據完全存放的時候,就優先考慮,使用序列化的方式在純內存中存儲。將RDD的每個partition的數據,序列化成一個大的字節數組,就一個對象;序列化后,大大減少內存的空間占用。
序列化的方式,唯一的缺點就是,在獲取數據的時候,需要反序列化。
如果序列化純內存方式,還是導致OOM,內存溢出;就只能考慮磁盤的方式,內存+磁盤的普通方式(無序列化)。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。