La classe Mapper

Le mappeur fait correspondre des paires <clé, valeur> en entrée à un ensemble de paires <clé, valeur> intermédiaires. Les paires intermédiaires ne doivent pas nécessairement être du même type que les paires d'entrée. Une paire d'entrées donnée peut correspondre à zéro ou à plusieurs paires de sorties.

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

Le système map/reduce de Netezza, pour une table d'entrée donnée, exécute une tâche map par tranche de données. Par conséquent, le nombre de tâches de cartographie est déterminé par le nombre de tranches de données sur lesquelles la table d'entrée est distribuée. Pour optimiser les performances du mappeur, veillez à ce que les données soient réparties uniformément sur les tranches de données.

L'implémentation du mappeur consiste en quatre méthodes : setup(), map(), cleanup() et run(). Par défaut, la méthode run() appelle une fois la méthode setup(), puis la méthode map() pour chaque paire <key, value> en entrée, et enfin la méthode cleanup(). Par exemple :
public void run(Context context) throws IOException,
InterruptedException {
setup(context);
while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
cleanup(context);
}

La méthode map(), par défaut, émet son entrée en sortie, agissant comme une fonction d'identité, et doit être surchargée. (Vous pouvez surcharger n'importe laquelle de ces méthodes, y compris run() pour les cas d'utilisation avancés)

L'objet contextuel pour le mappeur

Le mappeur a accès à l'objet contextuel, qui lui permet d'interagir avec le reste de l'environnement. L'objet contextuel, qui est transmis en tant qu'argument au mappeur et à d'autres méthodes, donne accès aux données de configuration du travail et permet au mappeur d'émettre des paires de sortie à l'aide de la méthode Context.write(key, value).

La méthode Context.getConfiguration( renvoie un objet de configuration contenant les données de configuration pour l'exécution d'un programme map/reduce. Vous pouvez définir des paires arbitraires (clé, valeur) de données de configuration dans le travail (par exemple avec la méthode Job.getConfiguration().set("myKey", "myVal")), puis récupérer ces données dans le mappeur avec la méthode Context.getConfiguration().get("myKey"). (Cette opération est généralement effectuée par la méthode setup() du mappeur)

La méthode cleanup() est principalement surchargée (par défaut, il n'y a pas de nettoyage). Si vous devez effectuer un nettoyage après le traitement de toutes les entrées, vous pouvez remplacer la valeur par défaut et la définir en fonction de votre cas d'utilisation.