私は新しいHadoop 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]);
Mainメソッドで、必要なパラメーターを以下のように設定するか、ジョブの実行中に -Dコマンドラインオプション を使用します。
Configuration conf = new Configuration();
conf.set("test", "123");
Job job = new Job(conf);
マッパー/リデューサーでパラメーターを次のように取得します
Configuration conf = context.getConfiguration();
String param = conf.get("test");