Map-Reduce的逻辑过程
假設(shè)我們需要處理一批有關(guān)天氣的數(shù)據(jù),其格式如下:
- 按照ASCII碼存儲,每行一條記錄
 - 每一行字符從0開始計(jì)數(shù),第15個到第18個字符為年
 - 第25個到第29個字符為溫度,其中第25位是符號+/-
 
|   0067011990999991950051507+0000+ 0043011990999991950051512+0022+ 0043011990999991950051518-0011+ 0043012650999991949032412+0111+ 0043012650999991949032418+0078+ 0067011990999991937051507+0001+ 0043011990999991937051512-0002+ 0043011990999991945051518+0001+ 0043012650999991945032412+0002+ 0043012650999991945032418+0078+  | 
現(xiàn)在需要統(tǒng)計(jì)出每年的最高溫度。
Map-Reduce主要包括兩個步驟:Map和Reduce
每一步都有key-value對作為輸入和輸出:
- map階段的key-value對的格式是由輸入的格式所決定的,如果是默認(rèn)的TextInputFormat,則每行作為一個記錄進(jìn)程處理,其中key為此行的開頭相對于文件的起始位置,value就是此行的字符文本
 - map階段的輸出的key-value對的格式必須同reduce階段的輸入key-value對的格式相對應(yīng)
 
對于上面的例子,在map過程,輸入的key-value對如下:
|   (0, 0067011990999991950051507+0000+) (33, 0043011990999991950051512+0022+) (66, 0043011990999991950051518-0011+) (99, 0043012650999991949032412+0111+) (132, 0043012650999991949032418+0078+) (165, 0067011990999991937051507+0001+) (198, 0043011990999991937051512-0002+) (231, 0043011990999991945051518+0001+) (264, 0043012650999991945032412+0002+) (297, 0043012650999991945032418+0078+)  | 
在map過程中,通過對每一行字符串的解析,得到年-溫度的key-value對作為輸出:
|   (1950, 0) (1950, 22) (1950, -11) (1949, 111) (1949, 78) (1937, 1) (1937, -2) (1945, 1) (1945, 2) (1945, 78)  | 
在reduce過程,將map過程中的輸出,按照相同的key將value放到同一個列表中作為reduce的輸入
|   (1950, [0, 22, –11]) (1949, [111, 78]) (1937, [1, -2]) (1945, [1, 2, 78])  | 
在reduce過程中,在列表中選擇出最大的溫度,將年-最大溫度的key-value作為輸出:
|   (1950, 22) (1949, 111) (1937, 1) (1945, 78)  | 
總結(jié)
以上是生活随笔為你收集整理的Map-Reduce的逻辑过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: vue+webpack+npm dev环
 - 下一篇: PHP程序员简历模板