2012-04-30 67 views
0

我是新來的Map Reduce續寫減少功能,在可迭代打印值。下面是我的打印功能:印刷獨特的或不同的值

public class Reduce extends Reducer<Text, Text, Text, Text> { 
    protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException { 

     StringBuilder builder = new StringBuilder(); 
     for (Text value : values) { 
     builder.append("<"); 
      builder.append(value); 
      builder.append(","); 
      builder.append(key); 
      builder.append(">"); 
      builder.append("\n"); 
      context.write(new Text(builder.substring(0, builder.length())), key); 
     } 
    } 

} 

輸出是:

Output

的問題是,價值越來越重複即< 2,1>重複2次......我的要求是後< 2,1>我應該直接拿到< 3,1>,然後< 4,1>。總之都是我應該是唯一的。

我最後的輸出應該是:

<2,1> 
<3,1> 
<4,1> 
<3,2> 
<4,2> 
<1,2> 
<4,3> 

請建議。

回答

1
 StringBuilder builder ; 
     for (Text value : values) 
     { 
      builder = new StringBuilder(); 
      builder.append("<"); 
      builder.append(value); 
      builder.append(","); 
      builder.append(key); 
      builder.append(">"); 
      builder.append("\n"); 
      context.write(new Text(builder.substring(0, builder.length())), key); 
     } 

試試這個。

+0

嘿它的工作...我這麼愚蠢......我不會再使用它之前,我的結算建設者...謝謝你這麼多:) – user1277070