2016-10-13 1 views
0
package com.ibm.dw61; 

import java.io.IOException; 
import org.apache.hadoop.io.IntWritable; 
import org.apache.hadoop.io.Text; 
import org.apache.hadoop.mapreduce.Reducer; 

public class MaxTempReducer extends 
    Reducer<Text, IntWritable, Text, IntWritable> { 

    public void reduce(Text key, Iterable<IntWritable> values, Context context) 
       throws IOException, InterruptedException { 
     int maxTemp = Integer.MIN_VALUE; 
     for (IntWritable value: values) { 
     maxTemp = Math.max(maxTemp, value.get()); 
     } 
     context.write(key, new IntWritable(maxTemp)); 

    } 
} 

Fragen:Maximales monatliche Temperatur Reducer Code

1) int MaxTemp = Integer.MIN_VALUE < ----- diese Linie scheinen eine Initialisierung der MaxTemp variabel zu sein. Warum initialisiert der Coder ihn nicht auf Null? Integer.MIN_VALUE gibt -2147483648. Es ist unmöglich, dass die niedrigste Temperatur jemals -100 Grad erreicht.

2) context.write (Schlüssel, neue IntWritable (maxTemp) < ------ Dies ist das Endergebnis. Schlüssel ist Monat und maxTemp ist die maximale Temperatur für den Monat. Warum das 'neue' Wort erforderlich für MaxTemp aber nicht für den Schlüssel (Monat)?

Antwort