spark-RDD

*MuYu*發表於2020-10-25

RDD就是一個不可變的分散式物件集合。

建立 RDD:  1)讀取一個外部資料集(SparkContext.textFile());
                    2)在驅動器程式中對一個集合進行並行化。
 
RDD 操 作: 1)轉 化 操 作(transformation): 會由一個 RDD 生成一個新的 RDD。
                      2)行 動 操 作 action):會對 RDD 計算出一個結果,並把結果返回到驅動器程式中,或儲存到外部儲存系統(如 HDFS)中。
 

轉化操作union() 、filter() 

行動操作count() 、take() 、collect() 

filter:RDD過濾資料;

union:兩個RDD操作;

count:RDD計數;

take:獲取RDD少量資料;

collect:獲取RDD全部資料。

轉化操作和行動操作的區別:在於 Spark計算 RDD的方式不同,轉化操作返回的是 RDD,而行動操作返回的是其他的資料型別

       RDD 的 轉化操作都是 惰性求值的。意味著在被呼叫行動操作之前 Spark 不會開始計算。
 
Spark 程式 或 shell會話 工作方式
        (1) 從外部資料建立出輸入 RDD
        (2) 使用諸如 fifi lter() 這樣的轉化操作對 RDD 進行轉化,以定義新的 RDD
        (3) 告訴 Spark 對需要被重用的中間結果 RDD 執行 persist() 操作。
        (4) 使用行動操作(例如 count() fifi rst() 等)來觸發一次平行計算, Spark 會對計算進行優化後再執行。


        RDD.persist() 讓 Spark 把 RDD 資料快取,將內容儲存到記憶體中(以分割槽方式儲存到叢集中的各機器上),這樣在之後的行動操作中,就可以重用這些資料了。

譜系圖lineage graph):記錄這些不同 RDD 之間的依賴關係(Spark在持久化的 RDD 丟失部分資料時,可以依靠譜系圖恢復所丟失的資料)。