2013-04-22 30 views
2

如何在HADOOP的Reduce阶段接收的键/值对上迭代多次。我想要做类似的事情,但它并没有进入第二次迭代。在Reduce阶段(HADOOP)中多次迭代键/值?

for (Vector value : values) 
{ 

    sum += value.getVector()[length-1]; 
    for (int i = 1; i < length-1; i++) 
    { 
     value.getVector()[i]=value.getVector()[i]/value.getVector()[length-1]; 
     mean[i]+=value.getVector()[i]; 
     } 
} 

for (Vector value : values) 
{ 
    for (int i = 1; i < length-1; i++) 
      { 
      value.getVector()[i]=value.getVector()[i]/value.getVector()[length-1]; 
      } 
} 

请给我解决方案? thnx :)

回答

2

您正在迭代values中的结果,并且一旦您对它们进行了迭代,则无法再次执行此操作。

如果在values中提供的总计数不是太大,您可以尝试将值设置为本地收集变量,然后您应该可以多次迭代它们。

试试这个:Java: use Enumeration multiple times

+0

如果我的价值算什么大? – Divyendra 2013-04-22 09:33:36

+0

尝试编码你的逻辑,这样你就不需要做多次传球,但可以一次传球达到你想要的。 (或者用两个不同的缩减器对数据进行两次映射) – 2013-04-22 10:05:48