Je suis novice sur hadoop, je me familiarise avec le style de programmation map-reduce mais maintenant je suis confronté à un problème : parfois je n'ai besoin que de map pour un travail et je n'ai besoin que du résultat de la map directement en sortie, ce qui signifie réduire phase n'est pas nécessaire ici, comment puis-je y parvenir ?
Réponses
Trop de publicités?Vous pouvez également utiliser IdentityReducer :
http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/lib/IdentityReducer.html
Peut être très utile lorsque vous devez lancer un travail avec des mappeurs uniquement à partir du terminal. Vous pouvez désactiver les réducteurs en spécifiant implicitement 0 réducteurs dans la commande hadoop jar :
-D mapred.reduce.tasks=0
Ainsi, la commande de résultat sera la suivante :
hadoop jar myJob.jar -D mapred.reduce.tasks=0 -input myInputDirs -output myOutputDir
Pour être rétrocompatible, Hadoop prend également en charge l'option "-reduce NONE", qui équivaut à "-D mapred.reduce.tasks=0".
Si vous utilisez oozie comme planificateur pour gérer vos tâches hadoop, vous pouvez simplement définir la propriété mapred.reduce.tasks (qui est le nombre par défaut de tâches de réduction par tâche) sur 0. Vous pouvez ajouter votre mappeur dans la propriété mapreduce .map.class, et il n'y aura pas non plus besoin d'ajouter la propriété mapreduce.reduce.class puisque les réducteurs ne sont pas nécessaires.
<configuration>
<property>
<name>mapreduce.map.class</name>
<value>my.com.package.AbcMapper</value>
</property>
<property>
<name>mapred.reduce.tasks</name>
<value>0</value>
</property>
.
.
.
<configuration>