Sebuah program grep sederhana yang dibuat oleh hadoop, yang dapat mengekstrak baris yang berisi string tertentu dari dokumen
Copy kode kodenya sebagai berikut:
/*
* Program grep sederhana yang dapat mengekstrak baris yang berisi string tertentu dari dokumen
*/
kelas publik grep extends Alat implementasi yang dikonfigurasi{
kelas statis publik grepMap memperluas Mapper<LongWritable, Text, Text,NullWritable>{
peta kekosongan publik (baris Panjang yang Dapat Ditulis, Nilai teks, Konteks konteks) menampilkan IOException, InterruptedException{
//Dapatkan parameter melalui Konfigurasi
String str = konteks.getConfiguration().get("grep");
if(nilai.toString().berisi(str)){
konteks.tulis(nilai, NullWritable.get());
}
}
}
@Mengesampingkan
public int run(String[] args) melempar Pengecualian {
if(args.panjang!=3){
System.out.println("ERROR");
Sistem.keluar(1);
}
Konfigurasi konfigurasi = getConf();
//melewati parameter
konfigurasi.set("grep", args[2]);
Pekerjaan pekerjaan = Pekerjaan baru(konfigurasi,"grep");
pekerjaan.setJarByClass(grep.class);
pekerjaan.setMapperClass(grepMap.class);
pekerjaan.setNumReduceTasks(0);
pekerjaan.setMapOutputKeyClass(Teks.kelas);
pekerjaan.setOutputValueClass(NullWritable.class);
Jalur masuk = Jalur baru(args[0]);
Jalur keluar = Jalur baru(args[1]);
FileSystem fileSystem = out.getFileSystem(konfigurasi);
if(fileSystem.exists(keluar))
fileSystem.delete(keluar, benar);
FileInputFormat.addInputPath(pekerjaan, masuk);
FileOutputFormat.setOutputPath(pekerjaan, keluar);
Sistem.keluar(pekerjaan.waitForCompletion(benar)?0:1);
kembali 0;
}