42 votes

Comment écrire des jobs hadoop "map only" ?

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 ?

59voto

Thomas Jungblut Points 11072

8voto

Peter Wippermann Points 968

5voto

voo Points 3505

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".

0voto

Neha Kumari Points 304

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>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X