【问题标题】:Do all MapReduce implementations take a keys paramater input into the reduce function?是否所有 MapReduce 实现都将键参数输入到 reduce 函数中?
【发布时间】:2018-03-25 07:38:19
【问题描述】:

之前我问过将键列表传递给 CouchDB 的 reduce 函数的用例是什么;答案 (https://stackoverflow.com/a/46713674/3114742) 提到了两个潜在的用例:

  1. 从设计角度来看,您可能希望使用映射函数发出的键
  2. 您可能正在根据按键输入(例如特定按键出现的频率)进行计算

MapReduce 的所有实现都将键数组作为 reduce 函数的输入吗? CouchDB 专门跟踪生成密钥的原始文档。即 CouchDB reduce 函数的输入:

function(keys, values, rereduce) {...}

键 arg 如下所示:[[key1,id1], [key2,id2], [key3,id3]]

即Couch 跟踪作为 Map 函数的结果发出键的实体,即使在 reduce 函数中也是如此。其他 MapReduce 实现是否跟踪此信息?或者这是否特定于 CouchDB...

【问题讨论】:

    标签: mapreduce


    【解决方案1】:

    并非所有的 mapreduce 实现都具有与 couchdb 相同的结构。 例如,在 mongodb mapreduce 中,与沙发数据库不同,只有一个键和值列表。因此,map 函数发出的所有键都被分组并作为一个键和值列表传递给 reduce 函数。

    例子:

    emit(1,10)
    emit(1,20)
    

    将被分组到

    reduce(1,[10,20])
    

    【讨论】:

    • 问题 - 你知道 MapReduce 实现不是这种情况(reduce 函数获取一个键列表作为输入)吗?
    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多