Простая программа grep, созданная Hadoop, которая может извлекать из документов строки, содержащие определенные строки.
Скопируйте код кода следующим образом:
/*
* Простая программа grep, которая может извлекать из документов строки, содержащие определенные строки.
*/
общедоступный класс grep расширяет настроенную реализацию инструмента {
общедоступный статический класс grepMap расширяет Mapper<LongWritable, Text, Text,NullWritable>{
общедоступная карта пустоты (строка LongWritable, текстовое значение, контекст контекста) выдает IOException, InterruptedException {
//Получаем параметры через конфигурацию
String str = context.getConfiguration().get("grep");
если(value.toString().contains(str)){
context.write(значение, NullWritable.get());
}
}
}
@Override
public int run(String[] args) выдает исключение {
если(args.length!=3){
System.out.println("ОШИБКА");
Система.выход(1);
}
Конфигурация конфигурации = getConf();
//передаем параметры
Configuration.set("grep", args[2]);
Задание job = новое задание(конфигурация,"grep");
job.setJarByClass(grep.class);
job.setMapperClass(grepMap.class);
job.setNumReduceTasks(0);
job.setMapOutputKeyClass(Text.class);
job.setOutputValueClass(NullWritable.class);
Путь в = новый путь (args[0]);
Выходной путь = новый путь (args[1]);
FileSystem fileSystem = out.getFileSystem(конфигурация);
если (fileSystem.exists (выход))
fileSystem.delete(выход, правда);
FileInputFormat.addInputPath(задание, в);
FileOutputFormat.setOutputPath(задание, выход);
System.exit(job.waitForCompletion(true)?0:1);
вернуть 0;
}