문서에서 특정 문자열을 포함하는 줄을 추출할 수 있는 hadoop으로 만든 간단한 grep 프로그램
다음과 같이 코드 코드를 복사합니다.
/*
* 문서에서 특정 문자열을 포함하는 줄을 추출할 수 있는 간단한 grep 프로그램
*/
공개 클래스 grep 확장 구성된 구현 도구{
공개 정적 클래스 grepMap은 Mapper<LongWritable, Text, Text,NullWritable>{를 확장합니다.
공용 무효 맵(LongWritable 줄, 텍스트 값, 컨텍스트 컨텍스트)에서 IOException, InterruptedException이 발생합니다.
//구성을 통해 매개변수 가져오기
String str = context.getConfiguration().get("grep");
if(value.toString().contains(str)){
context.write(value, NullWritable.get());
}
}
}
@보수
public int run(String[] args)는 예외를 발생시킵니다.
if(args.length!=3){
System.out.println("오류");
시스템.종료(1);
}
구성 구성 = getConf();
//매개변수 전달
configuration.set("grep", args[2]);
작업 job = new Job(configuration,"grep");
job.setJarByClass(grep.class);
job.setMapperClass(grepMap.class);
job.setNumReduceTasks(0);
job.setMapOutputKeyClass(Text.class);
job.setOutputValueClass(NullWritable.class);
경로 = new Path(args[0]);
경로 출력 = new Path(args[1]);
FileSystem fileSystem = out.getFileSystem(configuration);
if(파일시스템.존재(아웃))
fileSystem.delete(out, true);
FileInputFormat.addInputPath(job, in);
FileOutputFormat.setOutputPath(job, out);
System.exit(job.waitForCompletion(true)?0:1);
0을 반환합니다.
}