Я пытаюсь использовать MapReduce, но сервер показал, что все задачи (сопоставление и уменьшение) были неудачными. Я понятия не имею, что идет не так, так как я только что узнал oop. Ниже приведена настройка функции main () для заданий. Идея состоит в том, что map1 получает данные из файла 1, а map2 получает данные из файла2, они передают одну и ту же пару в reducer1, что является первым этапом. После того, как редуктор 1 выводит данные на выход 1, карта 3 получает данные с выхода 1, а затем передает на редуктор 2, а редуктор 2 выводит окончательные данные на выход2. Я почти уверен, что на этом этапе есть какая-то очевидная ошибка ...
Предупреждение для всей задачи:
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:134)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:747)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:175)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1807)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:169)Caused by: java.lang.NoSuchMethodException: com.eecs476.MostRated$map1.<init>()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getDeclaredConstructor(Class.java:2178)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:128)
... 7 more
try {
Configuration conf = new Configuration();
conf.set("mapred.textoutputformat.separator", ",");
Job j1 = Job.getInstance(conf, "j1");
j1.setJarByClass(MostRated.class);
MultipleInputs.addInputPath(j1, new Path(genPath), TextInputFormat.class);
MultipleInputs.addInputPath(j1, new Path(rfPath), TextInputFormat.class);
j1.setMapperClass(map1.class)
j1.setReducerClass(reducer1.class);
j1.setMapOutputKeyClass(Text.class);
j1.setMapOutputValueClass(Text.class);
j1.setOutputKeyClass(Text.class);
j1.setOutputValueClass(Text.class);
FileOutputFormat.setOutputPath(j1, new Path(outputPath + "1"));
j1.waitForCompletion(true);
//job 2
Job j2 = Job.getInstance(conf, "j2");
j2.setJarByClass(MostRated.class);
j2.setMapperClass(map3.class);
j2.setReducerClass(reducer2.class);
j2.setMapOutputKeyClass(Text.class);
j2.setMapOutputValueClass(Text.class);
j2.setOutputKeyClass(Text.class);
j2.setOutputValueClass(Text.class);
j2.setInputFormatClass(TextInputFormat.class);
j2.setOutputFormatClass(TextOutputFormat.class);
FileInputFormat.addInputPath(j2, new Path(outputPath + "1"));
FileOutputFormat.setOutputPath(j2, new Path(outputPath + "2"));
j2.waitForCompletion(true);
} catch (Exception e) {
System.err.println(e);
}