Hadoop Looping Редуктор - PullRequest
       5

Hadoop Looping Редуктор

0 голосов
/ 02 сентября 2011

Я пытаюсь найти способ "зациклить" мой редуктор, например:

for(String document: tempFrequencies.keySet())
{
if(list.get(0).equals(document))
{
testMap.put(key.toString(), DF.format(tfIDF));
}
}
//This allows me to create a hashmap which i plan to write out to context as Filename = key then all of the terms weights = value (a list I can parse out in the next job)

Код в настоящее время будет проходить через весь редуктор и даст мне то, что я хочу для list.get (0) но проблема в том, что как только он закончил делать все это сокращение, мне нужно, чтобы он снова запустился для list.get (1) и т. д. Любые идеи о том, как зациклить фазу сокращения после того, как она закончилась?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2011

Вы можете использовать технику key-tag-value.В mapper emit (ключ, 0, значение) для значений списка и (ключ, 1, значение) для документов (?).В редукторе значения будут сгруппированы по ключу и тегу и отсортированы по тегу для каждого ключа.Вы должны написать свой собственный компаратор группировки (и пользовательский разделитель).PS Я использую ту же технику для обработки графиков.Я могу предоставить пример кода после выходных.

0 голосов
/ 03 сентября 2011

Гнездо для петли

for(int i = 0; i < number_of_time; i++){
//your code

}

Заменить 0 на i.

...