2015-04-05 41 views
0

函数映射,在通常你会得到一个(K,V)与output.collect(K,V)如何在一个映射器中获得多个输出(k,v)?

,但我如何得到许多(K,V)在一个机能的研究地图

我试过回路这样的:

for (int i = 0; i < liste_cle.length; i++) 
     { 
      if (cle_R.equals(liste_cle[i].cle)) 
      { 
       ListIterator iterator = liste_cle[i].l.listIterator(); 
       while(iterator.hasNext()) 
       output.collect(new Text(iterator.next().toString()), new Text(val_R)); 
      } 
     } 

为为例如果liste_cle.length = 4个理论结果是:

01A ABCD

01B ABCD

01C ABCD

01D ABCD

但真正resulta是:

01a abcd只有

任何帮助将不胜感激。

回答

0

你的问题还不够清楚。 Mapper需要(k1,v1)并生成(k2,v2)作为每个输入分割的输出(对于textinpu格式,它是一条线)。所以mapper函数在每个输入分割上运行并生成输出键值对。 例:输入到映射器:

这是一个例子

映射器取各行作为输入分割。映射器的输入是(0,这是一个示例),其中key是偏移位置,值是完整行。然后根据您的地图功能逻辑,它会生成输出。所以你想要计算他的输出数字, (This,1)(is,1)(an,1)(example,1)。

现在看到这个映射器已经用各种键值对产生了输出。现在这叫做中间输出。在将这些数据发送给还原器之前,先进行混洗。让我知道这是否合理。

相关问题