partition主要作用就是將map的結果傳送到相應的reduce。這就對partition有兩個要求:
1)均衡負載,盡量的將工作均勻的分配給不同的reduce。
2)效率,分配速度一定要快。
mapreduce預設的partitioner是hashpartitioner。除了這個mapreduce還提供了3種partitioner。如下圖所示:
hashpartitioner計算方法是:
which reducer=(key.hashcode() & integer.max_value) % numreducetasks,得到當前的目的reducer。
定義自己partitioner
定義自己的分割槽也很簡單,只需要繼承partitioner類就可以,並且實現getpartition方法。
這裡需要注意的是這裡的key和value指的是map輸出的key和value資料型別
public使用自定義的partitioner更簡單static
class newpartitioner extends partitioner
}
//除了需要為job指定其partitioner之外,還需要設定reduce的個數,而且reduce的個數必須大於等於分割槽的個數,否則會出錯。設定partition
job.setpartitionerclass(newpartitioner.class);
job.setnumreducetasks(5);我這裡分割槽為5,reduce的個數也為5.
戰地日記PartI
帝都。自3月7日抵京,已近兩月,北京的天氣並沒有想象中那麼惡劣。不冷。或許是已近初春的緣故吧。到了現在,已是春暖花開的時候,園區門口那一排不知是什麼名的樹突然開了花!但,不論晴空萬里或烏雲密布,不論細雨綿綿或狂風呼號,不論漫天的柳絮飛舞都與我們無關。一日又一日,一夜復一夜,我們都在拼命的學習。5個月...
大資料之Map reduce
大資料問題一般解決方式 利用雜湊函式進行分流來解決記憶體限制或者其他限制的問題。1.雜湊函式又叫雜湊函式,雜湊函式的輸入域可以是非常大的範圍,但是輸出域是固定範圍。假設為s。雜湊函式的性質 1.典型的雜湊函式都擁有無限的輸入值域。2.輸入值相同時 返回值一樣。3.輸入值不同時,返回值可能一樣,也可能...
PhotoView原始碼解析 Part I
photoview庫的核心類是photoviewattacher,而他由幾個核心構建構成。我們乙個個拆開來看。從監聽事件這些驅動部件來入手容易一些。對於 的解釋我直接放在注釋裡。override public boolean ontouch view view,motionevent event 取...