Moja odwzorowujący musi przesłać następujące krotki:Jak Java Hadoop Mapper mogą wysyłać wiele wartości
<custID,prodID,rate>
I chcę wysłać do reduktor z custid jako klucza, jak i wartości, prodid i stopy razem, jak są potrzebne do fazy redukcji. Jaki jest najlepszy sposób na zrobienie tego?
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);
}
}
Dlaczego nie możesz wysłać wielu wartości? Nic nie ogranicza liczby par klucz-wartość, które może wytworzyć jedno zadanie mapy. – kichik