Spark常规性能调优二:RDD 优化
生活随笔
收集整理的這篇文章主要介紹了
Spark常规性能调优二:RDD 优化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
RDD 復用
在對 RDD 進行算子時,要避免相同的算子和計算邏輯之下對 RDD 進行重復的計算
對上圖中的 RDD 計算架構進行修改,得到如下圖所示的優化結果:
RDD 持久化
在 Spark 中,當多次對同一個 RDD 執行算子操作時,每一次都會對這個 RDD 之前的父 RDD 重新計算一次,這種情況是必須要避免的,對同一個 RDD 的重復計算是對資源的極大浪費,因此,必須對多次使用的 RDD 進行持久化,通過持久化將公共 RDD 的數據緩存到內存/磁盤中,之后對于公共 RDD 的計算都會從內存/磁盤中直接獲取 RDD 數據。對于 RDD 的持久化,有兩點需要說明:
? RDD 的持久化是可以進行序列化的,當內存無法將 RDD 的數據完整的進行存放的時候,可以考慮使用序列化的方式減小數據體積,將數據完整存儲在內存中。
? 如果對于數據的可靠性要求很高,并且內存充足,可以使用副本機制,對 RDD 數據進行持久化。當持久化啟用了復本機制時,對于持久化的每個數據單元都存儲一個副本,放在其他節點上面,由此實現數據的容錯,一旦一個副本數據丟失,不需要重新計算,還可以使用另外一個副本。
RDD 盡可能早的 filter 操作
獲取到初始 RDD 后,應該考慮盡早地過濾掉不需要的數據,進而減少對內存的占用,從而提升 Spark 作業的運行效率。
總結
以上是生活随笔為你收集整理的Spark常规性能调优二:RDD 优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spark常规性能调优一:最优资源配置
- 下一篇: spark Docker镜像构建及pus