在编写 MapReduce 作业(如果相关,特别是 Hadoop)时,必须定义一个 map()
和一个 reduce()
函数,两者都会产生一系列键/值对。键和值的数据类型由应用程序自由定义。
在字数统计的典型示例中,这两个函数都产生类型为 (string, int)
的对,键是一个字,值是出现次数。在这里 - 以及我见过的所有其他示例 - 输出的键和值类型在两个函数之间是一致的。
map()
和 reduce()
生成的键/值对的类型必须/应该在任何 MapReduce 应用程序中相同吗?如果是:为什么?
最佳答案
没有。显然,map 的输出对类型和 reduce 的输入对类型必须相同,因为一个被传递到另一个。
但是,您的 reduce 任务很可能会输出与传入的 map 对不同的类型 - 例如,如果 map 任务计算文档中的单词,而 reduce 任务计算的是平均单词频率。在这种情况下,map 将发出整数,而 reduce 将发出 float 。
关于hadoop - map() 和 reduce() 应该返回相同类型的键/值对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1859420/