La clase Mapper

El mapeador asigna pares <clave, valor> de entrada a un conjunto de pares <clave, valor> intermedios. No es necesario que los pares intermedios sean del mismo tipo que los pares de entrada. Un par de entrada dado puede corresponder a cero o a muchos pares de salida.

'<K1, ' V1>* → Mapper → ' <K2, ' V2>*

El map/reduce de Netezza, para una tabla de entrada dada, ejecuta una tarea map por dataslice. Como resultado, el número de tareas de mapa viene determinado por el número de dataslices en los que se distribuye la tabla de entrada. Para optimizar el rendimiento del mapeador, asegúrese de que los datos están distribuidos uniformemente en los dataslices.

La implementación de Mapper consta de cuatro métodos: setup(), map(), cleanup() y run(). Por defecto, el método run() llama una vez al método setup(), después al método map() para cada par <key, value> de entrada y, por último, al método cleanup(). Por ejemplo:
public void run(Context context) throws IOException,
InterruptedException {
setup(context);
while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
cleanup(context);
}

El método map(), por defecto, emite su entrada como salida, actuando como una función de identidad, y debe ser anulado. (Puede anular cualquiera de estos métodos, incluido run() para casos de uso avanzado)

El objeto de contexto para Mapper

Mapper tiene acceso al objeto context, que permite al mapper interactuar con el resto del entorno. El objeto context, que se pasa como argumento al mapper y a otros métodos, proporciona acceso a los datos de configuración del trabajo y permite al mapper emitir pares de salida mediante el método Context.write(key, value).

El método Context.getConfiguration() devuelve un objeto de configuración que contiene datos de configuración para la ejecución de un programa map/reduce. Puede establecer pares arbitrarios (clave, valor) de datos de configuración en el trabajo (por ejemplo, con el método Job.getConfiguration( ).set( "myKey", "myVal" ) y, a continuación, recuperar estos datos en el mapeador con el método Context.getConfiguration( ).get( "myKey" ). (Esto se hace normalmente con el método setup() del mapper)

El método cleanup() se anula principalmente (por defecto no se produce ninguna limpieza). Si necesita realizar una limpieza después de procesar todas las entradas, puede anular el valor predeterminado y configurarlo para que se ajuste a su caso de uso concreto.