wake-up-neo.net

Wie schreibe ich "Karte nur"? Hadoop-Jobs?

Ich bin ein Anfänger bei hadoop, ich kenne mich mit dem Stil der Map-Reduction-Programmierung aus, aber jetzt hatte ich ein Problem: Manchmal brauche ich nur eine Map für einen Job und ich brauche nur das Map-Ergebnis direkt als Ausgabe Phase ist hier nicht nötig, wie kann ich das erreichen?

41
Breakinen

Dadurch wird der Reduzierer ausgeschaltet.

job.setNumReduceTasks(0);

http://hadoop.Apache.org/docs/current/api/org/Apache/hadoop/mapreduce/Job.html#setNumReduceTasks(int)

58
Thomas Jungblut
8

Kann sehr hilfreich sein, wenn Sie einen Job mit Mapper nur vom Terminal aus starten müssen. Sie können Reduzierungen deaktivieren, indem Sie implizit 0 Reduzierungen im Befehl hadoop jar angeben:

-D mapred.reduce.tasks=0 

Der Ergebnisbefehl lautet also:

hadoop jar myJob.jar -D mapred.reduce.tasks=0 -input myInputDirs -output myOutputDir

Um abwärtskompatibel zu sein, unterstützt Hadoop auch die Option "-reduce NONE", die äquivalent zu "-D mapred.reduce.tasks = 0" ist. 

4
Alex

Wenn Sie oozie als Scheduler zum Verwalten Ihrer hadoop-Jobs verwenden, können Sie einfach die Eigenschaft mapred.reduce.tasks (die Standardanzahl an Aufgaben pro Job reduzieren) auf 0 setzen. Sie können Ihren Mapper in der Eigenschaft mapreduce hinzufügen .map.class, und es ist auch nicht nötig, die Eigenschaft mapreduce.reduce.class hinzuzufügen, da keine Reduzierungen erforderlich sind.

<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>
0
Neha Kumari