2015-09-26 79 views

回答

0

這是Hadoop的MapReduce組件工作原理的一個例子,它可以找到埃及每年的最高氣溫。

給定的設定溫度值的每年記錄

sample record1: 1995, Jan, Cairo , 33, C 
sample record2: 1995, Feb, Cairo , 37, C 
...... 
...... 

地圖功能通過提取年與空氣溫度解析輸入的記錄,併發射它們作爲其輸出

example map output 
(1950,0) 
(1950, 22) 
(1950, -11) 
(1949, 111) 
(1949, 78) 

然後,在將發送到reduce函數之前,MapReduce框架處理映射函數的輸出。通過關鍵

sample sort output 
(1949, [111, 78]) 
(1950, [0, 22, −11]) 

這種處理存儲,分組的鍵值對最後,每年出現與所有的空氣溫度讀數的列表。所有減少功能現在要做的是遍歷列表,拿起最大讀數:

(1949, 111) 
(1950, 22) 

Refernce:Hadoop: The Definitive Guide, 4th Edition

+0

嗨艾哈邁德,非常感謝上述信息。所以如果我正確地理解它,樣本排序輸出(1949,[111,78])被寫入磁盤。這些數據將被髮送到減速機功能。你是否也可以幫我理解鍵的分組是如何發生的(意味着什麼類負責這個操作)。 –

+0

reduce函數會聚合此示例(年)中與每個鍵相關的值,因此您將爲每個鍵實例化一個reduce任務。與每個鍵相關的值在被呈現給Reducer之前都會被Hadoop自動分類和分組。作爲程序員,你所要做的就是編寫地圖並減少邏輯。 –

+0

欣賞你對這個艾哈邁德的輕快回應。您提到與每個鍵相關的值在被呈現給Reducer之前會被Hadoop自動分類和分組。但是,我認爲鍵是在hadoop呈現給reducer之前進行排序和分組的(請糾正我,如果我錯了)。例如,我需要知道的是,hadoop使用快速排序算法對鍵進行排序但是,用什麼來對鍵進行分組。提前致謝。 –