Я работаю над проектом mapreduce с использованием Hadoop. В настоящее время у меня 3 рабочих места.Использование счетчиков Hadoop - Несколько заданий
Я хочу использовать счетчики Hadoop, но проблема в том, что я хочу сделать фактическое количество в первой задаче, но получить доступ к значению счетчика в редукторе 3-го задания.
Как я могу это достичь? Где я должен определить enum
? Нужно ли мне это пропускать, бросила вторую работу? Это также поможет увидеть пример кода для этого, поскольку я еще ничего не нашел.
Примечание: Я использую Hadoop 2.7.2
EDIT: Я уже пробовал подход объяснил here и это не удалось. Мое дело другое, поскольку я хочу получить доступ к счетчикам с другой работы. (не от преобразователя к редуктору).
То, что я пытался сделать: первую работу:
public static void startFirstJob(String inputPath, String outputPath) throws IOException, ClassNotFoundException, InterruptedException {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "wordCount");
job.setJarByClass(WordCount.class);
job.setMapperClass(WordCountMapper.class);
job.setCombinerClass(WordCountReducer.class);
job.setReducerClass(WordCountReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(LongWritable.class);
job.setInputFormatClass(SequenceFileInputFormat.class);
job.setOutputFormatClass(SequenceFileOutputFormat.class);
FileInputFormat.addInputPath(job, new Path(inputPath));
FileOutputFormat.setOutputPath(job, new Path(outputPath));
job.waitForCompletion(true);
}
Определено счетчик перечисления в другом классе:
public class CountersClass {
public static enum N_COUNTERS {
SOMECOUNT
}
}
Попытка чтения счетчика:
Cluster cluster = new Cluster(context.getConfiguration());
Job job = cluster.getJob(JobID.forName("wordCount"));
Counters counters = job.getCounters();
CountersClass.N_COUNTERS mycounter = CountersClass.N_COUNTERS.valueOf("SOMECOUNT");
Counter c1 = counters.findCounter(mycounter);
long N_Count = c1.getValue();
Возможный дубликат [? Есть ли способ, чтобы получить доступ ряд успешных заданий карты из задачи снижения в работе MR] (http://stackoverflow.com/questions/8009802/is-there-a-way-to-access-number-of-success-map-tasks-from-a-reduce-task-in-an) – tworec
Я думаю, что неплохо использовать счетчики изнутри сократить работу. см. http://stackoverflow.com/questions/8009802/is-there-a-way-to-access-number-of-successful-map-tasks-from-a-reduce-task-in-an/ – tworec
Да, Я это уже видел, и я пробовал этот подход. Но в этом случае он хочет получить счетчики внутри редуктора (той же работы). Это не то же самое, что и в моем случае. –