spark(四):RDD介紹

說明

本博客每週五更新一次。 RDD 是spark計算引擎重要的數據結構,使用RDD開發業務,必須深入學習使用它。

什麼是RDD

  • RDD(Resilient Distributed Dataset) 彈性分佈式數據集,spark中最重要數據結構概念,代表一個不可變、可分區、可並行計算的集合,邏輯上是一個數據集,物理上可以分塊分佈在不同的機器上併發運行。
  • RDD具有數據流模型的特點:自動容錯、位置感知性調度和可伸縮性,能分佈在集羣的節點上,以函數式操作集合的方式,進行各種並行計算。RDD允許用戶在執行多個查詢時顯式地將工作集緩存在內存中,後續的查詢能夠重用工作集,這極大地提升了查詢速度。
  • RDD內置大量函數,可以大大提升開發效率,快速完成功能開發。

RDD生命週期

  • spark程序中,首先創建或讀取RDD,然後對數據進行一系列一次或多次變換操作(Transform),並對保存中間結果(Cache),最後對結果進行處理(Action)。

創建RDD

  • RDD的創建可以通過對內存中的數據並行化計算結果,或直接讀取分佈式數據庫(S3, HDFS, Cassandra 等等)創建,也可以直接讀取本地文件創建。

RDD變換

  • RDD變換操作支持數據變換接口,常見如filter, map等等,執行到變換代碼是,RDD數據並不立即發生實際變化(Lazily transform),而是保存數據的依賴關係,直到最終RDD進行動作(Action)時。RDD系統從全局角度來優化Transform的運行過程,節省計算時間。

RDD緩存

  • 緩存(cache)操作將數據的中間結果保存在內存中,以便反覆使用。

RDD結果處理

  • RDD結果處理(action)操作將數據的運算結果進行統計和返回。常見如count 和 collect。

RDD特性

RDD默認有如下重要特性。

  1. 如何分塊(Partition)
  2. 與父RDD依賴關係(Dependency)
  3. 從父RDD求子RDD的函數(Function)
  4. 當前RDD存儲位置(Preferred Localtion)
  5. 存儲RDD分塊類(Partitioner)

RDD限制

  1. 沒有任何內置優化引擎
  2. 不能處理結構化數據

RDD函數

RDD的創建有兩種常用方式:

  • sc.parallelize()
  • sc.makeRDD()

總結

  • RDD是Spark數據集合的一種,還有DataFrame、DataSet等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章