私はHadoop MapReduceの初心者です。私はhttp://archive.cloudera.com/cdh/3/hadoop/mapred_tutorial.htmlでWordCountサンプルのバリエーションを試していました。私のソースファイルには追加の列があり、集計をどの列に行うかを指定できるようにしたい。Hadoop MapReduce設定オブジェクトを使用してカスタムパラメータを渡すにはどうすればよいですか?
run(...)メソッド(87行目から116行目)では、コマンドラインから渡された引数があります。区切り文字を持つ2つの追加の引数と、フィルタリングを実行する列の位置を持つ次の引数が2つあります)。私が設定します(サンプルの28行)の方法でこれらの値を取得しようとすると、
私は
if (args.length == 5) {
conf.set("ipPosition", args[4]);
}
if (args.length == 6) {
conf.set("delimiter", args[5]);
}
としてこれらの値を設定しています。しかし、彼らはnullに戻ってきています。
public void configure(JobConf job) {
try {
String varIpPosition = job.get("ipPosition");
if (varIpPosition != null) {
ipPosition = Integer.parseInt(varIpPosition);
}
String varDelimiter = job.get("delimiter");
if (varDelimiter != null) {
if (varDelimiter == "comma") {
lineDelimiter = ",";
} else {
lineDelimiter = " ";
}
}
System.err.println("IP Position" + ipPosition);
} catch (Exception ex) {
System.err.println("Error Configuring Job :"
+ job.get("ipPosition") + " - "
+ StringUtils.stringifyException(ex));
}
}
アムは、私が間違って設定パラメータを設定する、または私は間違ってそれらを取得するのですか?どんな助けもありがとうございます。
さて、それは私の悪いことでした。 If条件の両方が真であることをどのように期待しますか? if(args.length == 5){ conf.set( "ipPosition"、args [4]); } if(args.length == 6){ conf.set( "delimiter"、args [5]); } 金曜の夜のコーディングは明らかに悪い考えです。条件を修正した後、コードは正常に動作しています。 ご迷惑をおかけして申し訳ありません! – sumitkm