Spark學習(一)--RDD操作

標籤(空格分隔): 學習筆記


Spark編程模型的兩種抽象:RDD(Resilient Distributed Dataset)和兩種共享變量(支持並行計算的廣播變量和累加器)。

RDD

RDD是一種具有容錯性的基於內存的集羣計算方法。
RDD特徵:
1. 分區(partition):有一個數據分片列表,能夠將數據進行切分,切分後的數據能夠進行並行極端,是數據集的原子組成部分;
2. 函數(compute):計算每個分片,得出一個可遍歷的結果,用於說明在父RDD上執行何種計算;
3. 依賴(dependency):計算每個RDD對父RDD的依賴列表,源RDD沒有依賴,通過依賴關係描述血統(lineage);
4. 優先位置:每一個分片的優先計算位置;
5. 分區策略:描述分區模式和數據存放的位置,

常用的RDD有很多種,每個Transformation操作都會產生一種RDD。

RDD依賴

  1. 窄依賴(narrow dependency)
    窄依賴是指父RDD的每一個分區都最多被一個子RDD的分區所使用。表現爲一父一子或者多父一子。
  2. 寬依賴(wide dependency)
    子RDD的每個分區都依賴於所有父RDD的所有分區或者多個分區。

創建RDD

  1. 集合(數組)創建RDD
    通過並行集合(數組)創建RDD,主要調用SParkContext的parallelize方法;
  2. 存儲創建RDD
    可以從各種分佈式文件創建,也可以從支持Hadoop輸入格式數據源創建。

RDD操作

應用邏輯是通過一系列Transformation和Action來表達的,前者在RDD之間指定處理的相互依賴關係,後者指定輸出的形式。
* Transformation:是指該操作從已經存在的數據及上創建一個新的數據集,是數據集的邏輯操作,並沒有進行真正的計算;
* Action:指該方法提交一個與前一個Action之間的所有Transformation組成的job進行計算,Spark會根據Action將作業切分成多個Job。·

共享變量

  1. 廣播變量
    可以在內的所有節點中被訪問,用戶緩存變量(只讀);

    val broadcastVar = sc.broadcast(Array(1,2,3))

  2. 累加器
    只能用來做加法的變量,如計數和求和。

    val accum = sc.accumulator(0)

發佈了45 篇原創文章 · 獲贊 14 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章