Найдите два числа, сумма которых составляет 45, используя mapreduce - PullRequest
0 голосов
/ 07 октября 2018

У меня есть файл 2 ГБ, хранящийся в HDFS.Содержимое файла выглядит так:

1
24
65
77

.... Одно число в каждой строке.Я хочу знать два числа (любые два), чья сумма равна 45, используя map limit.

Может кто-нибудь сказать, какой должна быть логика в mapper и что для редуктора?

1 Ответ

0 голосов
/ 09 октября 2018

Хотя я согласен с @cricket_007 с его проблемами, есть способ, которым вы могли бы сделать это с помощью нескольких картографов и редукторов в одном задании MapReduce:

В картостроителе предположим, что x является исходным значениеми y = 45 - x.Для каждого x создайте запись с ключом (min(x, y), max(x, y)).Так, например, если оригинал 15, то у вас будет (15, 30), а если оригинал 40, у вас будет (5, 40).Меньшее значение всегда должно быть первым, чтобы ключи соответствовали соответствующим образом.Тогда значение записи должно быть x.

В редукторе, если у вас есть две записи с одним и тем же ключом, но разными значениями, тогда у вас есть совпадение, и вы можете сообщить.Поскольку могут быть дубликаты, вы можете найти несколько записей с одним и тем же ключом и одинаковыми значениями.Их следует игнорировать, поскольку они не соответствуют вашим требованиям.

...