使用mapreduce查找两个总和为45的数字

时间:2018-10-07 17:32:52

标签: hadoop mapreduce

我有2GB的文件存储在HDFS中。该文件的内容如下:

1
24
65
77

... 每行一个数字。我想知道使用map reduce的两个数(任意两个)的总和为45。

谁能说出mapper中的逻辑是什么,以及reducer中的逻辑是什么?

1 个答案:

答案 0 :(得分:1)

尽管我同意@ cricket_007的关注,但您可以通过一种方法在一个MapReduce工作中使用多个映射器和化简器来做到这一点:

在映射器中,假设x是原始值,y = 45 - x。为每个x创建一个键为(min(x, y), max(x, y))的条目。因此,例如,如果原始文件为15,则您将拥有(15, 30),而如果原始文件为40,则您将拥有(5, 40)。较小的值应始终是第一个,因此键将适当匹配。条目的值应为x

在化简器中,如果您有两个具有相同键但值不同的条目,则您具有一个匹配项并可以报告。由于可能存在重复项,因此您可能会发现多个具有相同键和相同值的条目。这些应该被忽略,因为它们不符合您的要求。