main()
とToolRunner.run()
のmapreduceジョブを呼び出す違いは何ですか?主なクラスがMapReduce extends Configured implements Tool
と言うとき、mainメソッドから単純にジョブを実行するだけでは得られない追加の特権は何ですか?ありがとう。ジョブの呼び出しの相違
答えて
そこには特別な権限ませんが、あなたのコマンドラインオプションを使用すると、特定の構成プロパティを抽出し、そこから設定オブジェクトを設定できるようになりますGenericOptionsParser、経由して実行します:むしろ、基本的には
http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/util/GenericOptionsParser.html
を解析し、いくつかのこと(リストの引数のインデックスを使用して)コマンドラインから明示的に設定プロパティを設定することができます:
hadoop jar myJar.jar com.Main prop1value prop2value
public static void main(String args[]) {
Configuration conf = new Configuration();
conf.set("prop1", args[0]);
conf.set("prop2", args[1]);
conf.get("prop1"); // will resolve to "prop1Value"
conf.get("prop2"); // will resolve to "prop2Value"
}
ToolRunnerと縮合しE:しかし警告の
hadoop jar myJar.jar com.Main -Dprop1=prop1value -Dprop2=prop2value
public int run(String args[]) {
Configuration conf = getConf();
conf.get("prop1"); // will resolve to "prop1Value"
conf.get("prop2"); // will resolve to "prop2Value"
}
最後にひとつの単語:設定方法getConfを()を使用した場合、最初のジョブオブジェクトを作成し、その設定を抜く - 仕事のコンストラクタはConfigruationオブジェクトのコピーを作成しますあなたが渡された参照に変更を行った場合、あなたの仕事は、これらの変更は表示されませんので、渡された:
public int run(String args[]) {
Configuration conf = getConf();
conf.set("prop3", "blah");
Job job = new Job(conf); // job will have a deep copy of conf
conf.set("prop4", "dummy"); // here we're amending the original conf
job.getConfiguration().get("prop4"); // will resolve to null
}
(ToolRunner .RUNを使用することにより)、任意のHadoopのアプリケーションはstandard command line optionsは、Hadoopのでサポートされて処理することができます。 ToolRunnerは内部でGenericOptionsParserを使用します。要するに、コマンドラインで提供されているhadoop固有のオプションが解析され、アプリケーションのConfigurationオブジェクトに設定されます。単にmain()を使うと、これは自動的に起こりません。
例えば、あなたが言う場合:
% hadoop MyHadoopApp -D mapred.reduce.tasks=3
はその後
ToolRunner.run(new MyHadoopApp(), args)
が自動的
Configuration
オブジェクト内の3にvalueパラメータ
mapred.reduce.tasks
を設定します。
私たちが取得する追加の特典はありません。一般的に、人々はハープ・ジョブで単にmain()を使用しません。 .run()を使用するのが標準的な方法です。
@ TejasP- Thanx a lot !! :)はい、私はそのような漠然としたアイデアを念頭に置いていましたが、今はその.. –
- 1. メモリ間接呼び出しとレジスタ間接呼び出しの相違点
- 2. Ajax呼び出しとWebサービスAPI呼び出しの相違点
- 3. 別のシェルスクリプト内からのシェルスクリプトの呼び出しの相違
- 4. __doPostBackの呼び出しとaspボタンのClickイベントの相違点
- 5. statvfsとdfコマンドの呼び出しの相違点
- 6. setInterval呼び出しの引数の相違点
- 7. 次のNSString代入呼び出しの基本的な相違
- 8. VueJS - 関数名と呼び出しの相違点
- 9. CFscript呼び出し値メソッドとの相違
- 10. jQuery - ajax呼び出しを行うreplaceWithの相違点
- 11. 相違点のAPI呼び出しを確認する
- 12. マトリックスインプリメンテーションでinner_product()を呼び出す場合の相違点
- 13. .NET MVC 4 localhost:portとlocalhost:port/home/indexの相違を呼び出す
- 14. LaravelジョブとサードパーティのAPI呼び出しを呼び出すときのイベント
- 15. 開始ジョブと呼び出しコマンド-assjob
- 16. Powershell Receive-Job:コマンドをジョブとして呼び出すときのクォータ違反
- 17. 実行中のアプリケーションとコマンドラインの間のJava呼び出しの相違
- 18. Objective-Cのドット表記とメソッド呼び出しのパフォーマンスの相違
- 19. mysql_fetch_array/mysqli_fetch_array - 最初の呼び出し時の動作の相違点(PHP)
- 20. IE標準、相違点および相違点の相違点
- 21. R6での自己メソッド呼び出しとプライベートメソッド呼び出しの違い
- 22. 他のスクリプトを呼び出すためにマスタースクリプトを呼び出すcronジョブ
- 23. HTTPリラクティブAPIを呼び出すCronジョブ
- 24. .netからのautosysジョブの呼び出し
- 25. http.get()を呼び出すときの相対パスが間違っています
- 26. Talend:ジョブのWebサービス呼び出しタイムアウトを変更する
- 27. Jenkinsさんがパイプラインからジョブを呼び出しました
- 28. COM相互運用機能によるスレッドの呼び出し
- 29. 相当の$(Windows外部コマンド)呼び出し
- 30. Javascript:ラムダ関数の呼び出しと直接的な式の呼び出しの違い?
さて、これはコードではうまく説明できませんでした。 Jobオブジェクトを最初に作成してから、その設定を取得するのと同じように、いくつかの点を先に気付かなかったのですが、今は意味があります。 –