Un programa grep simple creado por hadoop, que puede extraer líneas que contienen ciertas cadenas de documentos
Copie el código de código de la siguiente manera:
/*
* Un programa grep simple que puede extraer líneas que contienen ciertas cadenas de documentos
*/
grep de clase pública extiende la herramienta de implementos configurados {
La clase pública estática grepMap extiende Mapper<LongWritable, Text, Text,NullWritable>{
El mapa vacío público (línea de escritura larga, valor de texto, contexto de contexto) arroja IOException, InterruptedException {
//Obtener parámetros a través de Configuración
Cadena str = contexto.getConfiguration().get("grep");
if(valor.toString().contiene(cadena)){
contexto.write(valor, NullWritable.get());
}
}
}
@Anular
public int run(String[] args) lanza una excepción {
si(args.longitud!=3){
System.out.println("ERROR");
Sistema.salir(1);
}
Configuración configuración = getConf();
//pasar parámetros
configuración.set("grep", args[2]);
Trabajo trabajo = nuevo Trabajo(configuración,"grep");
trabajo.setJarByClass(grep.class);
trabajo.setMapperClass(grepMap.class);
trabajo.setNumReduceTasks(0);
job.setMapOutputKeyClass(Text.clase);
job.setOutputValueClass(NullWritable.class);
Ruta en = nueva ruta(args[0]);
Ruta de salida = nueva ruta (args[1]);
FileSystem fileSystem = out.getFileSystem(configuración);
si(fileSystem.exists(fuera))
fileSystem.delete(fuera, verdadero);
FileInputFormat.addInputPath(trabajo, en);
FileOutputFormat.setOutputPath(trabajo, fuera);
System.exit(job.waitForCompletion(true)?0:1);
devolver 0;
}