A classe Mapper

O mapeador mapeia pares <chave, valor> de entrada para um conjunto de pares <chave, valor> intermediários. Os pares intermediários não precisam ser do mesmo tipo que os pares de entrada. Um determinado par de entrada pode ser mapeado para zero ou para muitos pares de saída.

<K1, V1>* → Mapeador → <K2, V2>*

O map/reduce da Netezza, para uma determinada tabela de entrada, executa uma tarefa de map por dataslice. Como resultado, o número de tarefas de mapeamento é determinado pelo número de dados sobre os quais a tabela de entrada é distribuída. Para otimizar o desempenho do mapeador, certifique-se de que os dados estejam distribuídos de forma homogênea nos conjuntos de dados.

A implementação do Mapper consiste em quatro métodos: setup(), map(), cleanup() e run(). Por padrão, o método run() chama o método setup() uma vez, depois o método map() para cada par <chave, valor> de entrada e, por fim, o método cleanup(). Por exemplo:
public void run(Context context) throws IOException,
InterruptedException {
setup(context);
while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
cleanup(context);
}

O método map(), por padrão, emite sua entrada como saída, atuando como uma função de identidade, e deve ser substituído. (Você pode substituir qualquer um desses métodos, inclusive run() para casos de uso avançado)

O objeto de contexto para o Mapper

O mapeador tem acesso ao objeto de contexto, que permite que o mapeador interaja com o restante do ambiente. O objeto de contexto, que é passado como argumento para o mapeador e outros métodos, fornece acesso aos dados de configuração do trabalho e permite que o mapeador emita pares de saída usando o método Context.write(key, value).

O método Context.getConfiguration() retorna um objeto de configuração que contém dados de configuração para um programa de mapa/redução em execução. Você pode definir pares arbitrários (chave, valor) de dados de configuração no trabalho (por exemplo, com o método Job.getConfiguration().set("myKey", "myVal")) e, em seguida, recuperar esses dados no mapeador com o método Context.getConfiguration().get("myKey"). (Normalmente, isso é feito com o método setup() do mapeador)

O método cleanup() é principalmente substituído (por padrão, não ocorre nenhuma limpeza). Se precisar realizar a limpeza depois que todas as entradas forem processadas, você poderá substituir o padrão e defini-lo para corresponder ao seu caso de uso específico.