spark在國內的大量普及,越來越多人學習spark技術,作為spark core中最重要的資料結構rdd,是學習spark重點之一
rdd(resilient distributed datasets,彈性分布式資料集),是spark最為核心的概念,自然也是理解apache spark 工作原理的最佳入口之一。
分布式資料集:顧名思義,可以把資料分配到不同的節點上,但是在spark中,分布式資料集則是封裝了計算邏輯的概念
其特點如下:
➢ 彈性
⚫ 儲存的彈性:記憶體與磁碟的自動切換;
⚫ 容錯的彈性:資料丟失可以自動恢復;
⚫ 計算的彈性:計算出錯重試機制;
⚫ 分片的彈性:可根據需要重新分片。
➢ 分布式:資料儲存在大資料集群不同節點上
➢ 資料集:rdd 封裝了計算邏輯,並不儲存資料
➢ 資料抽象:rdd 是乙個抽象類,需要子類具體實現
➢ 不可變:rdd 封裝了計算邏輯,是不可以改變的,想要改變,只能產生新的 rdd,在
新的 rdd 裡面封裝計算邏輯
➢ 可分割槽、平行計算
用以下**來模擬rdd,輔助理解rdd在spark執行過程中是如何在driver 和 excetor 中傳輸
使用乙個 driver 和兩個excetor 類來模擬
任務類
class task extends serializable
val logic : (int)=>int = _ * 2
}
子任務類
class subtask extends serializable
}
excetor1
object executor
}
excetor2
object executor2
}
driver
object driver
}
其中task類就類似餘rdd模型,當然只是粗略的,其中還有很多細節 對spark中RDD的理解
update at 2016.1.25 rdd作者的 鏈結 的理解 spark要解決的問題 1 有些資料要多次讀寫,磁碟速度很慢 2 沒有互動的介面,不能看到中間結果 適用的應用 1 機器學習 多個迭代次運算,逼近 優化問題 是不是三維重建中優化也可以用到這個 2 計算結果還要用的 pagerank...
spark中建立RDD的方式
spark中建立rdd的幾種方式 1 使用程式中的集合建立rdd 一般用於測試 2 使用本地檔案系統建立rdd 一般用於資料量大的檔案的測試 3 基於hdfs建立rdd 生產環境最常用的rdd建立方式 4 使用s3建立rdd 5 基於資料流建立rdd packagecom.dt.spark impo...
spark 中RDD的持久化原理
rdd持久化是可以手動選擇不同的策略的。比如可以將rdd持久化在記憶體中 持久化到磁碟上 使用序列化的方式持久化,多持久化的資料進行多路復用。只要在呼叫persist 時傳入對應的storagelevel即可。spark提供的多種持久化級別,主要是為了在cpu和記憶體消耗之間進行取捨。下面是一些通用...