Me pregunto si es posible agregar un objeto miembro que se pueda usar en varias llamadas a map(). Por ejemplo, un StringBuilder:¿El objeto Mapper de Hadoop está compartido en varios subprocesos?
private StringBuilder builder;
public void map(...){
...
builder.setLength(0);
builder.append(a);
builder.append(b);
builder.append(c);
d = builder.toString();
...
}
Obviamente, si el objeto del asignador se comparte a través de múltiples hilos, el objeto constructor anterior no se comportan como se esperaba debido al acceso simultáneo de más de un hilos.
Así que mi pregunta es: ¿está seguro de que cada hilo en hadoop usará un objeto mapeador dedicado por sí mismo? ¿O es un comportamiento configurable?
Gracias
Eso es lo que quiero saber. Gracias. – JRaSH
Solo necesita clonar los objetos si necesita todo el objeto clave/valor; de lo contrario, si solo necesita algunos de los contenidos que agrega a StringBuffer, todo irá bien. No se olvide de agregar el método de limpieza (se me olvida el nombre para anular) para enjuagar/escribir en el Reducer lo que esté almacenando en el buffer entre las llamadas de Mapa, de lo contrario terminará con algunos datos que nunca se enviarán a los Reductores. – Drizzt321