私はhadoopの初心者で、map-reduceプログラミングのスタイルに慣れてきましたが、問題に直面しました:時々、ジョブのマップだけが必要で、マップ結果を出力として直接必要とするだけですフェーズはここでは必要ありませんが、どうすれば実現できますか?
これにより、減速機がオフになります。
job.setNumReduceTasks(0);
IdentityReducerを使用することもできます。
http://hadoop.Apache.org/common/docs/current/api/org/Apache/hadoop/mapred/lib/IdentityReducer.html
端末からのみマッパーでジョブを起動する必要がある場合に非常に役立ちます。 hadoop jarコマンドで0のレデューサーを暗黙的に指定することで、レデューサーをオフにできます。
-D mapred.reduce.tasks=0
したがって、結果コマンドは次のようになります。
hadoop jar myJob.jar -D mapred.reduce.tasks=0 -input myInputDirs -output myOutputDir
後方互換性のために、Hadoopは「-reduce NONE」オプションもサポートしています。これは「-D mapred.reduce.tasks = 0」と同等です。
Hadoopジョブを管理するスケジューラーとしてoozieを使用している場合、プロパティmapred.reduce.tasks(ジョブごとのデフォルトのリデュースタスクの数)を0に設定できます。マッパーをプロパティmapreduceに追加できます。 .map.class、およびリデューサーが必要ないため、プロパティmapreduce.reduce.classを追加する必要もありません。
<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>