クラスのrunOldMapper(...)
とrunNewMapper(...)
メソッドの違いがわかりません。Hadoop はからのパラメーターMapTask
に基づいて決定します。しかし、フレームワークのどこでいつこのパラメータが設定されたのでしょうか? デフォルト値はすべてのジョブで FALSE だと思います。which setsを呼び出すことで値を TRUE に設定できますが、いつ、なぜこのパラメーターを設定する必要があるのでしょうか?"useNewApi"
JobConf
JobConf.setUseNewMapper(boolean flag)
"mapred.mapper.new-api"
質問する
1599 次
1 に答える
3
この動作がmapred.mapper.new-api
構成によってトリガーされるという仮定は正しいです。
新しいジョブまたは古いジョブのconf/clientを使用しているかどうかに応じて、ソースで次のものを探します。
org.apache.hadoop.mapreduce.Job.submit()
setUseNewAPI()
プライベートメソッドを呼び出すメソッド。これによりnew-api
、古いマッパー/レデューサークラスのプロパティが設定されているかどうかに応じてプロパティが構成されますorg.apache.hadoop.mapred.JobConf
-質問で指摘したように、新しいAPIマッパー実装を使用している場合は開発者がメソッドを呼び出す必要がありsetUseNewMapper(true)
ます(デフォルトではfalseでマッパークラスはmapred.Mapperインターフェースを実装し、マッパーがmapreduceを拡張する場合はtrueです。マッパークラス)
于 2012-12-01T14:11:57.747 に答える