2011-09-02 100 views
0

我试图找到一种方法来“循环”我减速,例如:Hadoop的循环减速器

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)等任何想法如何循环减少阶段后,它已完成?

+0

我将重新制定。这个问题对于hadoop框架特别重要吗?如果是这样,你可以给更多的背景。 –

+2

在Hadoop的reduce状态期间,它会为映射器中的每个键值对循环。因此,如果我按照Paul的建议进行操作,那么只需针对每个键,值对运行代码两次(或者多次设置循环)。我需要做的是运行整个reduce(循环遍历每个键,值)输出结果,然后在第一个键值对处再次循环启动。直到我得到每个文档的结果。 – chrstahl89

+0

好的。所以,如果我理解正确的东西,你需要找到一种方法,以更新的价值回到循环。正确? –

回答

0

巢for循环

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

} 

其中i更换0。

0

您可以使用键标签值技术。 在映射器中为列表值和文档(?)的(键值,值)发出(键值为0,值)。在缩减器中,值将按键和标签分组,并按照每个键的标签进行分类。你应该编写你自己的分组比较器(和自定义分区器)。 PS我正在使用相同的技术进行图形处理。周末后我可以提供示例代码。