在對 rdd 進行運算元時, 要避免相同的運算元和計算邏輯之下對 rdd 進行重複的計算,
優化前如圖
優化後如圖
在 spark 中,當多次對同乙個 rdd 執行運算元操作時, 每一次都會對這個 rdd以之前的父 rdd 重新計算一次,這種情況是必須要避免的,對同乙個 rdd 的重複計算是對資源的極大浪費,因此,必須對多次使用的 rdd 進行持久化,通過持久化將公共 rdd 的資料快取到記憶體/磁碟中, 之後對於公共 rdd 的計算都會從記憶體/磁碟中直接獲取 rdd 資料。
對於 rdd 的持久化,有兩點需要說明:
第一, rdd 的持久化是可以進行序列化的, 當記憶體無法將 rdd 的資料完整的進行存放的時候,可以考慮使用序列化的方式減小資料體積,將資料完整儲存在記憶體中。
第二,如果對於資料的可靠性要求很高,並且記憶體充足,可以使用副本機制,對 rdd 資料進行持久化。當持久化啟用了複本機制時,對於持久化的每個資料單元都儲存乙個副本,放在其他節點上面,由此實現資料的容錯,一旦乙個副本資料丟失,不需要重新計算,還可以使用另外乙個副本。
獲取到初始 rdd 後,應該考慮盡早地過濾掉不需要的資料,進而減少對記憶體的占用,從而提公升 spark 作業的執行效率。
spark效能調優 RDD持久化
第一,rdd重構與優化 盡量去復用rdd,差不多的rdd,可以抽取成為乙個共同的rdd,供後面的rdd計算時,反覆使用。第二,公共rdd一定要實現持久化 持久化,也就是說,將rdd中的資料快取到記憶體中,或者快取到磁碟中,blockmanager 以後無論對這個rdd做多少次計算,那麼都是直接取rd...
技術難點 Spark效能調優 RDD運算元調優篇
不廢話,直接進入正題!1.rdd復用 在對rdd進行運算元時,要避免相同的運算元和計算邏輯之下對rdd進行重複的計算,如下圖所示 對上圖中的rdd計算架構進行修改,得到如下圖所示的優化結果 2.盡早filter 獲取到初始rdd後,應該考慮盡早地過濾掉不需要的資料,進而減少對記憶體的占用,從而提公升...
spark效能調優之重構RDD架構,RDD持久化
當第一次對rdd2執行運算元,獲取rdd3的時候,就會從rdd1開始計算,就是讀取hdfs檔案,然後對rdd1執行運算元,獲取到rdd2,然後再計算,得到rdd3 預設情況下,多次對乙個rdd執行運算元,去獲取不同的rdd 都會對這個rdd以及之前的父rdd,全部重新計算一次 讀取hdfs rdd1...