5.2 RDD編程---鍵值對RDD

1、鍵值對RDD的建立

1.從文件中加載

2.經過並行集合(數組)建立RDD

2、經常使用的鍵值對RDD轉換操做

1.reduceByKey(func)

功能:使用func函數合併具備相同鍵的值編程

2.groupByKey()

功能:對具備相同鍵的值進行分組數組

3.keys

4.values

5.sortByKey()

默認按升序排序,括號裏寫false爲降序排序ide

 

6.mapValues(func)

功能:對鍵值對RDD中的每一個value都應用一個函數,key不會發生變化。函數

7.join

功能:把幾個RDD當中元素key相同的進行鏈接oop

8.combineByKey 

combineByKey(createCombiner,mergeValue,mergeCombiners,partitioner,mapSideCombine)spa

createCombiner:在第一次遇到Key時建立組合器函數,將RDD數據集中的V類型值轉換C類型值(V => C)3d

mergeValue:合併值函數,再次遇到相同的Key時,將createCombiner的C類型值與此次傳入的V類型值合併成一個C類型值(C,V)=>C blog

mergeCombiners:合併組合器函數,將C類型值兩兩合併成一個C類型值 排序

partitioner:使用已有的或自定義的分區函數,默認是HashPartitioner mapSideCombine:是否在map端進行Combine操做,默認爲true內存

注意:前三個函數的參數類型要對應;第一次遇到Key時調用createCombiner,再次遇到相同的Key時調用mergeValue合併值

例:編程實現自定義Spark合併方案。給定一些銷售數據,數據採用鍵值對的形式<公司,收入>,求出每一個公司的總收入和平均收入,保存在本地文件

提示:可直接用sc.parallelize在內存中生成數據,在求每一個公司總收入時,先分三個分區進行求和,而後再把三個分區進行合併。只須要編寫RDD combineByKey函數的前三個參數的實現。

3、綜合實例

題目:給定一組鍵值對("spark",2),("hadoop",6),("hadoop",4),("spark",6),鍵值對的key表示圖書名稱,value表示某天圖書銷量,請計算每一個鍵對應的平均值,也就是計算每種圖書的天天平均銷量。

相關文章
相關標籤/搜索