Я использую Hadoop для вычисления совпадения сходства между словами. У меня есть файл, который состоит из совместно встречающихся пар слов, что выглядит следующим образом:Hadoop: Как собрать результат сокращения в Java HashMap
a b
a c
b c
b d
Я использую подход, основанный на Graph, который рассматривает слова как узлы и сопутствующие слова есть ребро между ними. Мой алгоритм должен вычислить степень всех узлов. Я успешно написал Map-Reduce
работу, чтобы вычислить общую степень, которая выводит следующее:
a 2
b 3
c 2
d 1
В настоящее время вывод записывается обратно в файл, но то, что я хочу вместо этого, чтобы захватить результат в, скажем, java.util.HashMap
. Затем я хочу использовать это HashMap
в другом задании Reduce
, чтобы вычислить окончательное сходство.
Вот мои вопросы:
- Можно ли захватить результаты сократить работу в памяти (
List
,Map
). Если да, то как? - Это лучший подход? Если нет, как мне с этим справиться?
Если я правильно понял, вам нужен как вход вашего первого задания, так и вывод вашего первого задания для запуска второго? В любом случае должно быть возможно просто каскадировать два задания. Насколько велика будет ожидаемая хэшмап? (вы могли бы поставить его в распределенный кеш для второго задания) – DDW
Вы правы! Мне нужно как вход первого задания, так и вывод первого задания для выполнения второго задания. HashMap может занимать до нескольких десятков тысяч записей. – codemaniac