final string splited = value.tostring().split("\t");
final newk2 k2 = new newk2(long.parselong(splited[0]), long.parselong(splited[1]));
final longwritable v2 = new longwritable(long.parselong(splited[1]));
context.write(k2, v2);
};}newk2 要繼承 writablecomparable
static class newk2 implements writablecomparable
public newk2(long first, long second)
@override
public void readfields(datainput in) throws ioexception
@override
public void write(dataoutput out) throws ioexception
/*** 當k2進行排序時,會呼叫該方法.
* 當第一列不同時,公升序;當第一列相同時,第二列公升序
*/@override
public int compareto(newk2 o)
return (int)(this.second - o.second);
}@override
public int hashcode()
@override
public boolean equals(object obj)
newk2 ok2 = (newk2)obj;
return (this.first==ok2.first)&&(this.second==ok2.second);
}}
問:為什麼實現該類?
答:因為原來的v2不能參與排序,把原來的k2和v2封裝到乙個類中,作為新的k2
MapReduce學習筆記
mapreduce是一種程式設計模式,用於大規模資料的並行運算。map reduce 是它們的主要思想。使用者用map 對映 函式把一組鍵值對對映成另一組鍵值對,指定併發的reduce 歸納 函式,來保證所有對映的鍵值對中的每乙個共享共同的鍵組。工作原理 如上圖 右圖是 裡給出的流程圖。一切都是從最...
MapReduce中的排序
hadoop的計算模型就是map reduce,每乙個計算任務會被分割成很多互不依賴的map reduce計算單元,將所有的計算單元執行完畢後整個計算任務就完成了。因為計算單元之間互不依賴所以計算單元可以分配到不同的計算機上執行,這樣就可以將計算壓力平攤到多個機器上面。當然效能線性提高是有條件的,前...
Mapreduce學習筆記(二)
今天來談一談,shuffle過程,shuffle中文翻譯是洗牌,是在map 和reduce之間的一套可編寫程式,就像可插拔的元件一樣,我們可以編寫一些程式來替換它們,以達到我們的需求目的。以下是詳細的shuffle過程。partition 是實現對檔案的分類輸出,如下圖,實現按年份不同將結果輸出到不...