Manupulieren Iterator in Mapreduce

Ich versuche, die Summe der angegebenen Punkte mithilfe von hadoop zu ermitteln. Das Problem besteht darin, alle Werte von einem bestimmten Schlüssel in einem einzelnen Reduzierer abzurufen. Es sieht aus wie das

Reducer:

 public static class Reduce extends MapReduceBase implements
        Reducer<Text, IntWritable, Text, DoubleWritable> {

    public void reduce(Text key, Iterator<IntWritable> values,
            OutputCollector<Text, DoubleWritable> output, Reporter reporter)
            throws IOException {
        Text word = new Text();

        Iterator<IntWritable> tr = values;
        IntWritable v;
        while (tr.hasNext()) {
             v = tr.next();

            Iterator<IntWritable> td = values;
            while (td.hasNext()) {

                IntWritable u = td.next();
                double sum = u+v;
                word.set( u + " + " + v);
                output.collect(word, new DoubleWritable(sum));
            }
        }
    }
}

Und ich versuche, zwei Kopien der Iterator-Variablen zu erstellen, damit ich alle Werte des zweiten Iterators durchgehen kann, während ich einen einzelnen Wert vom vorherigen Iterator erhalte (zwei while-Schleifen oben), aber die beiden Iteratoren den gleichen Wert haben die ganze Zeit

Ich bin mir nicht sicher, ob dies der richtige Weg ist. Jede Hilfe wird sehr geschätzt.

Vielen Dank

Tsegay

Antworten auf die Frage(8)

Ihre Antwort auf die Frage