從頭學習大數據培訓課程 spark 基於內存的分散式計算框架(二)RDD 編程基礎使用
1.常用的轉換
假設rdd的元素是: {1,2,2,3}
應用於pairRdd
假設rdd的元素是:{1, 2, 3},other元素是:{3, 4, 5}
2.常用操作介面
假設rdd的元素是:{1, 2, 3, 3}
3.創建RDD
有兩種方式:讀取外部數據集,以及在驅動器程序中對一個集合進行並行化
parallelize 集合併行化textFile 本地文件或者HDFS文件4.map()函數 和 take()函數
map(func)
take(num)5.count()函數和collect()函數
count()
collect()6.集合操作
distinct,去重,但其操作的開銷大,因為它需要所有數據通過網路進行混洗
unionintersection
subtract
7.aggregate()函數
aggregate()函數需要我們提供期待返回的類型的初始值,然後通過一個函數把RDD中的元素合併起來放入累加器,考慮到每個節點是在本地累加的,最終,還需要通過第二個函數把累加器兩兩合併
8.top()函數和 foreach()函數
top(num)
9.共享變數
我們傳遞給Spark的函數,如map(),或者filter()的判斷條件函數,能夠利用定義在函數之外的變數,但是集群中的每一個task都會得到變數的一個副本,並且task在對變數進行的更新不會被返回給driver。而Spark的兩種共享變數:累加器(accumulator)和廣播變數(broadcast variable)
累加器累加器可以很簡便地對各個worker返回給driver的值進行聚合。累加器最常見的用途之一就是對一個job執行期間發生的事件進行計數。廣播變數廣播變數通常情況下,當一個RDD的很多操作都需要使用driver中定義的變數時,每次操作,driver都要把變數發送給worker節點一次,如果這個變數中的數據很大的話,會產生很高的傳輸負載,導致執行效率降低。使用廣播變數可以使程序高效地將一個很大的只讀數據發送給多個worker節點,而且對每個worker節點只需要傳輸一次,每次操作時executor可以直接獲取本地保存的數據副本,不需要多次傳輸。
10.wordcount and sort
推薦閱讀:
※大數據時代:發掘大數據未知的潛能
※大數據背景下的互聯網思維
※決定大數據時代的話語權——數據
※大數據時代的數據價值與利用
※學習大數據的正確打開方式