#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, поскольку это требует времени