图1.1 MapReduce 执行流程图
MapReduce伪代码:
实现Map和Reduce两个函数[3]
Map函数和Reduce函数用户自己实现的,这两个函数的作用是定义任务本身。
Map函数
在接受一个键值对(key-value pair)的同时会产生一组中间键值对。MapReduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。
ClassMapper
methodmap(String input_key, String input_value):
// input_key: text document name
// input_value: document contents
for eachword w ininput_value:
EmitIntermediate(w, "1");
Reduce函数
接受一个键,以及相关的一组值,将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)。
ClassReducer
method reduce(String output_key,Iteratorintermediate_values):
// output_key: a word
// output_values: a list of counts
intresult = 0;
for eachv inintermediate_values:
result += ParseInt(v);
Emit(AsString(result));