Un simple programme grep réalisé par hadoop, qui peut extraire des lignes contenant certaines chaînes de documents
Copiez le code comme suit :
/*
* Un programme grep simple qui peut extraire des lignes contenant certaines chaînes de documents
*/
public class grep étend l'outil d'implémentation configuré {
la classe statique publique grepMap étend Mapper<LongWritable, Text, Text,NullWritable>{
carte vide publique (ligne LongWritable, valeur du texte, contexte contextuel) lève IOException, InterruptedException {
//Obtenir les paramètres via la configuration
String str = context.getConfiguration().get("grep");
if(value.toString().contains(str)){
contexte.write(value, NullWritable.get());
}
}
}
@Outrepasser
public int run(String[] args) lève une exception {
si(args.length!=3){
System.out.println("ERREUR");
Système.exit(1);
}
Configuration configuration = getConf();
//passer les paramètres
configuration.set("grep", args[2]);
Job job = new Job(configuration,"grep");
job.setJarByClass(grep.class);
job.setMapperClass(grepMap.class);
job.setNumReduceTasks(0);
job.setMapOutputKeyClass(Text.class);
job.setOutputValueClass(NullWritable.class);
Chemin d'entrée = nouveau Chemin(args[0]);
Chemin de sortie = nouveau Chemin(args[1]);
FileSystem fileSystem = out.getFileSystem(configuration);
si (fileSystem.exists (out))
fileSystem.delete (out, vrai);
FileInputFormat.addInputPath(travail, dans);
FileOutputFormat.setOutputPath(travail, sortie);
System.exit(job.waitForCompletion(true)?0:1);
renvoie 0 ;
}