map reduce に新しい API を使用して、通常の expession を -D コマンド ライン パラメーターとして使用しようとしていますが、取得されません。その結果、Pattern.compile(pattern) はNullPointerException
私のマッパーコードは;
public class MdacMapper extends Mapper<Text, Text, Text, Text> {
private Pattern compiledPattern;
public void setup(Context context) {
Configuration config = context.getConfiguration();
String pattern = config.get("mapper.pattern");
compiledPattern = Pattern.compile(pattern);
}
// mapper
}
そして私のコントローラーコードは;
public class JobController {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = new Job(conf);
job.setJarByClass(JobController.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
FileInputFormat.setInputPaths(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.setMapperClass(MdacMapper.class);
job.setReducerClass(MdacReducer.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.waitForCompletion(true);
job.submit();
}
}
最後に、私が行っているコマンド ライン呼び出しは次のとおりです。
hadoop jar mapreducer.jar /input/aclogdrop /output/acjava \
-Dmapper.pattern=".*\|(\d{8}):\d*\.\d*\|(\d+)\|AC_ADO_QRY\(\d*?\)\|\d?\s?\[\s?(.*?)\]"
構成パラメーター mapper.pattern を取得できない理由はありますか?