MaxCompute MapReduce 過程:
以wordcount爲例:
a.txt文件如下:
a,b,a
b,b,a
c,a,a
如上所示,有3行
MAP階段:
1.每一行一個map
map1 負責 a,b,a
map2 負責 b,b,a
map3 負責 c,a,a
2.以 key-value形式讀取數據
map1: <a,1> <b,1> <a,1>
map2: <b,1> <b,1> <a,1>
map3: <c,1> <a,1> <a,1>
SHUFFLE階段:
1.合併排序
排序階段 (以key值排序)
map1: <a,1> <a,1> <b,1>
map2: <a,1> <b,1> <b,1>
map3: <a,1> <a,1> <c,1>
合併階段( key值相同的value累加)
map1: <a,2 ><b,1>
map2: <a,1> <b,2>
map3: <a,2> <c,1>
2.分配給Reduce
以key值排序
<a,2> <a,1> <a,2> <b,1> <b,2> <c,1>
按key值分配給不同reduce
reduce1: <a,2> <a,1> <a,2>
reduce2: <b,1> <b,2>
reduce3: <c,1>
REDUCE階段
合併運算,並排序:
在 Shuffle 階段前期,首先對每個 Map Worker 的輸出
reduce1: <a,5>
reduce2: <b,3>
reduce3: <c,1>
注意: maxcompute mapreduce的輸入,輸出只能是表