9

ほとんどの Hadoop MapReduce プログラムは次のようなものです。

public class MyApp extends Configured Implements Tool {
    @Override
    public int run(String[] args) throws Exception {
        Job job = new Job(getConf());
        /* process command line options */
        return job.waitForCompletion(true) ? 0 : 1;
    }
    public static void main(String[] args) throws Exception {
        int exitCode = ToolRunner.run(new MyApp(), args);
        System.exit(exitCode);
    }
}

の使用法はConfigured何ですか? asToolConfiguredどちらにもgetConf()setConf()共通点があります。それは私たちのアプリケーションに何を提供しますか?

4

2 に答える 2

11

Configuredインターフェイスの実装クラスですConfigurable。とConfiguredの実装を持つ基本クラスです。getConf()setConf()

この基本クラスを拡張するだけで、これを拡張するクラスを を使用して構成できConfiguration、 には複数の実装がありConfigurationます。

コードが次の行を実行すると、

ToolRunner.run(new MyApp(), args);

内部的にはこれを行います

ToolRunner.run(tool.getConf(), tool, args);

上記の場合、あなたが言ったように実装されているクラスインスタンスtoolですが、それは単なるインターフェースです。実装は基本クラスからのものです。上記のコードでクラスを拡張しない場合は、独自に実装する必要があります。MyAppToolgetConf()ConfiguredConfiguredgetConf()setConf()

于 2013-01-03T11:52:19.293 に答える
3

Configuredインターフェイスのデフォルトの実装ですConfigurable- 基本的にそのメソッドは、渡されたオブジェクトsetConfへのプライベート インスタンス変数を保持し、その参照を返しますConfigurationgetConf()

ToolConfigurableインターフェイスの拡張であり、追加run(..)メソッドを提供し、ToolRunnerコマンド ライン オプションを ( を使用して) 解析し、メソッドに渡されるオブジェクトをGenericOptionsParser構築するために使用されます。ConfigurationsetConf(..)

通常、メイン クラスは Configured を拡張して、Tool で必要な Configurable インターフェイス メソッドが実装されるようにします。

一般に、ToolRunner ユーティリティ クラスを使用して MapReduce ジョブを起動する必要があります。これは、コマンド ライン引数を解析して Configuration オブジェクトを構築するという一般的なタスクを処理するためです。詳細については、ToolRunner の API ドキュメントを参照してください。

于 2013-01-03T11:51:38.497 に答える