Mein Mapper muss senden die folgenden Tupel senden:Wie Java Hadoop Mapper können mehrere Werte
<custID,prodID,rate>
Und ich will die CustID als Schlüssel zum Minderer senden, und als Wert der prodID und Geschwindigkeit zusammen, wie Sie werden für die Reduktionsphase benötigt. Welches ist der beste Weg, dies zu tun?
public void map(Object key, Text value, Context context)
throws IOException, InterruptedException {
String[] col = value.toString().split(",");
custID.set(col[0]);
data.set(col[1] + "," + col[2]);
context.write(custID, data);
}
public void reduce(Text key, Iterable<Text> values, Context context)
throws IOException, InterruptedException {
for (Text val : values) {
String[] temp = val.toString().split(",");
Text rate = new Text(temp[1]);
result.set(rate);
context.write(key, result);
}
}
Warum können Sie nicht einfach mehrere Werte senden? Nichts begrenzt die Anzahl der Schlüssel-Wert-Paare, die eine einzelne Map-Aufgabe erzeugen kann. – kichik