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

drkbr07n  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(337)

我有一个2gb的文件存储在hdfs中。文件的内容如下所示:

1
24
65
77

.... 每行一个数字。我想知道两个数字(任意两个)的总和是45使用Map减少。
有人能告诉我们什么是mapper中的逻辑,什么是reducer吗?

eoigrqb6

eoigrqb61#

虽然我同意@cricket\u 007的观点,但有一种方法可以在一个mapreduce作业中使用多个mapper和reducer:
在mapper中,假设 x 是原值和 y = 45 - x . 对于每个 x ,创建键为的条目 (min(x, y), max(x, y)) . 例如,如果原稿是 15 ,那么你就得 (15, 30) ,如果原件是 40 ,你应该 (5, 40) . 较小的值应该总是第一个,这样键就会适当地匹配。然后,条目的值应为 x .
在reducer中,如果有两个项具有相同的键但值不同,那么就有一个匹配项,并且可以报告。因为可能存在重复项,所以您可能会发现多个条目具有相同的键和相同的值。这些应该被忽略,因为它们不符合您的要求。

相关问题