云计算
    作者:涂兰敬

    什么是MapReduce?

         [ 中关村在线 原创 ] 暂无评论
        map函数和reduce函数

      map函数和reduce函数是交给用户实现的,这两个函数定义了任务本身。   map函数:接受一个键值对(key-value pair),产生一组中间键值对。MapReduce框架会将map函数产生的中间键值对里键相同的值传递给一个reduce函数。   reduce函数:接受一个键,以及相关的一组值,将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)。   

        统计词频的MapReduce函数的核心代码非常简短,主要就是实现这两个函数。   map(String key, String value):   

        // key: document name   

        // value: document contents   for each word w in value:   EmitIntermediate(w, "1");   reduce(String key, Iterator values):   

        // key: a word   

        // values: a list of counts   int result = 0;   for each v in values:   result += ParseInt(v);   Emit(AsString(result));   

        在统计词频的例子里,map函数接受的键是文件名,值是文件的内容,map逐个遍历单词,每遇到一个单词w,就产生一个中间键值对<w, "1">,这表示单词w咱又找到了一个;MapReduce将键相同(都是单词w)的键值对传给reduce函数,这样reduce函数接受的键就是单词w,值是一串"1"(最基本的实现是这样,但可以优化),个数等于键为w的键值对的个数,然后将这些“1”累加就得到单词w的出现次数。最后这些单词的出现次数会被写到用户定义的位置,存储在底层的分布式存储系统(GFS或HDFS)。

      

    提示:支持键盘“← →”键翻页
    本文导航

    关注排行榜

    产品品牌

    文章推荐

    互动沙龙

    相关内容 网友评论 返回首页
    专家咨询