Um programa grep simples feito pelo hadoop, que pode extrair linhas contendo certas strings de documentos
Copie o código do código da seguinte forma:
/*
* Um programa grep simples que pode extrair linhas contendo certas strings de documentos
*/
classe pública grep extends Ferramenta de implementos configurados{
classe estática pública grepMap estende Mapper<LongWritable, Text, Text,NullWritable>{
mapa público void (linha LongWritable, valor de texto, contexto de contexto) lança IOException, InterruptedException {
//Obter parâmetros através da configuração
String str = context.getConfiguration().get("grep");
if(valor.toString().contains(str)){
context.write(valor, NullWritable.get());
}
}
}
@Substituir
public int run(String[] args) lança exceção {
if(args.comprimento!=3){
System.out.println("ERRO");
Sistema.exit(1);
}
Configuração configuração = getConf();
//passa parâmetros
configuração.set("grep", args[2]);
Trabalho trabalho = novo Trabalho(configuração,"grep");
job.setJarByClass(grep.class);
job.setMapperClass(grepMap.class);
job.setNumReduceTasks(0);
job.setMapOutputKeyClass(Texto.class);
job.setOutputValueClass(NullWritable.class);
Caminho de entrada = novo Caminho(args[0]);
Caminho de saída = novo Caminho(args[1]);
FileSystem fileSystem = out.getFileSystem(configuração);
if(fileSystem.exists(out))
fileSystem.delete(fora, verdadeiro);
FileInputFormat.addInputPath(trabalho, em);
FileOutputFormat.setOutputPath(trabalho, saída);
System.exit(job.waitForCompletion(true)?0:1);
retornar 0;
}