Как использовать Hadoop MapReduce для вычисления max или min выражения с десятками переменных

#math #mapreduce #hadoop2

#математика #mapreduce #hadoop2

Вопрос:

Дано математическое выражение с десятками переменных, каждой из которых может быть присвоено несколько возможных значений. Например, математическое выражение содержит 20 переменных, каждой из которых может быть присвоено значение 1, 2 или 3. В этом случае может быть 3 ^ 20 способов перестановки присваивания.

Если мы хотим получить максимальное или минимальное значение среди всех возможных перестановок присваивания выражению методом перебора, из-за экспоненциального масштаба кандидатов на перестановку присваивания, автономному компьютеру определенно потребуется много времени для завершения вычислений. Затем я подумал о Hadoop MapReduce, то есть вычислить все перестановки присваивания в Mapper, а затем выполнить агрегацию в объединителе и Mapper.

Очень прямое, но неудобное решение — сохранить все кандидаты на перестановку присваивания в файл и загрузить его в HDFS, тогда Hadoop MapReduce может просто завершить. Но, как я упоминал в начале, прямой ввод на самом деле является только выражением, перестановки присваивания также должны быть вычислены с помощью программы (скажем, Java) в любом случае.

Поэтому я хотел бы спросить, возможно ли завершить весь процесс получения минимального / максимального значения среди всех перестановок присваивания без загрузки перестановок присваивания в HDFS?

Ответ №1:

Допустим, вычисляемая вами функция равна f (x)= ax ^ 2 bx c; Ваш входной файл должен содержать значения для a, b, c и x в некотором фиксированном порядке.

Вы можете написать пользовательский mapper для вычисления значения функции и вывода (любой ключ, вычисленная сумма) его в редуктор.

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

Надеюсь, это поможет.

Комментарии:

1. assignment permutation candidates в моем вопросе фактически означает строку присваивания, как вы упомянули. Но я также упомянул это как <b> неудобное </b> решение, поскольку кандидаты на перестановку присваивания в любом случае генерируются программно. Итак, есть ли какой-либо способ для картографов использовать сгенерированные перестановки присваивания напрямую, не сохраняя их в hdfs, поскольку это требует времени