1. 程式人生 > >Spark一些必須知道的概念

Spark一些必須知道的概念

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

1.RDD。彈性分散式資料集,是Spark最核心的資料結構。有分割槽機制,所以可以分散式進行處理。有容錯機制,通過RDD之間的依賴關係來恢復資料。

2.依賴關係。RDD的依賴關係是通過各種Transformation(變換)來得到的。父RDD和子RDD之間的依賴關係分兩種:①窄依賴  ②寬依賴

①針對窄依賴:父RDD的分割槽和子RDD的分割槽關係是:一對一

窄依賴不會發生Shuffle,執行效率高,spark框架底層會針對多個連續的窄依賴執行流水線優化,從而提高效能。例如 map  flatMap等方法都是窄依賴方法

②針對寬依賴:父RDD的分割槽和子RDD的分割槽關係是:一對多

寬依賴會產生shuffle,會產生磁碟讀寫,無法優化。

3.DAG。有向無環圖,當一整條RDD的依賴關係形成之後,就形成了一個DAG。一般來說,一個DAG,最後都至少會觸發一個Action操作,觸發執行。一個Action對應一個Job任務。

4.Stage。一個DAG會根據RDD之間的依賴關係進行Stage劃分,流程是:以Action為基準,向前回溯,遇到寬依賴,就形成一個Stage。遇到窄依賴,則執行流水線優化(將多個連續的窄依賴放到一起執行)

5.task。任務。一個分割槽對應一個task。可以這樣理解:一個Stage是一組Task的集合

6.RDD的Transformation(變換)操作:懶執行,並不會立即執行

7.RDD的Action(執行)操作: