oop ошибка уменьшения карты. (о множественном входе и многоэтапном) - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь использовать 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);
}
...