0

私はreduceをマッピングし、reduce関数を書いて値をIterableに出力するのは初めてです。以下は私の印刷機能です:

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);
        }  
  }

}

出力は次のとおりです。

出力

問題は、値が繰り返されることです。つまり、<2,1> が 2 回繰り返されます。つまり、すべての my は一意である必要があります。

私の最終的な出力は次のようになります。

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

提案してください。

4

1 に答える 1

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);
        }  

これを試して。

于 2012-04-30T07:21:20.280 に答える