web-dev-qa-db-ja.com

Hadoopマッパーに引数を渡す

私は新しいHadoop APIを使用しており、いくつかのパラメーター(いくつかの文字列)をマッパーに渡す方法を探しています。
どうすればよいですか?

このソリューションは古いAPIで機能します

JobConf job = (JobConf)getConf();
job.set("NumberOfDocuments", args[0]);

ここで、「NumberOfDocuments」はパラメータの名前であり、その値は「args[0]“、コマンドライン引数。この引数を設定すると、次のようにレデューサーまたはマッパーでその値を取得できます。

private static Long N;
public void configure(JobConf job) {
     N = Long.parseLong(job.get("NumberOfDocuments"));
}

トリッキーな部分は、次のようなパラメータを設定できないことです。

Configuration con = new Configuration();
con.set("NumberOfDocuments", args[0]);
16
wlk

Mainメソッドで、必要なパラメーターを以下のように設定するか、ジョブの実行中に -Dコマンドラインオプション を使用します。

Configuration conf = new Configuration();
conf.set("test", "123");

Job job = new Job(conf);

マッパー/リデューサーでパラメーターを次のように取得します

Configuration conf = context.getConfiguration();
String param = conf.get("test");
45
Praveen Sripati