2016-10-10 3 views
3

Я работаю над программой MapReduce, и я попал в блокпост и нуждаюсь в некоторой помощи. У меня есть программа, которая запускает 3 задания (задание №2 запускается 5 раз в цикле for), и кажется, что некоторые из моих картографов и редукторов не определены должным образом. При компиляции я продолжаю получать «метод не переопределяет или не реализует метод из супертипа».Hadoop - ошибка @Override для картографов и редукторов

Вот основная структура моей программы:

Job 1:

FirstMapper
Нет Редуктор

Job 2:

Второй Mapper
Первый Reducer

Job 3:

Final Mapper
Final Reducer

А вот как я мои картографами и редукторы определены:

public static class FirstMapper extends Mapper<Object, Text, LongWritable, Vertex> { 
     @Override 
     public void map(Object key, Text value, Context context) throws IOException, InterruptedException {} 


public static class SecondMapper extends Mapper<LongWritable, Vertex, LongWritable, Vertex> { 
     @Override 
     public void map(long key, Vertex value, Context context) throws IOException, InterruptedException {} 


public static class FirstReducer extends Reducer<LongWritable, Vertex, LongWritable, Vertex> { 
     @Override 
     public void reduce(Long key, Iterable<Vertex> values, Context context) throws IOException, InterruptedException {} 


public static class FinalMapper extends Mapper<LongWritable, Vertex, LongWritable, LongWritable> { 
     @Override 
     public void map(Long key, Vertex value, Context context) throws IOException, InterruptedException {} 


public static class FinalReducer extends Reducer<LongWritable, LongWritable, LongWritable, LongWritable> { 
     @Override 
     public void reduce(Long key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {} 

FirstMapper, кажется, нормально, как это не вызывает но другие 4 делают, и я не могу понять, почему потому, что подписи метода выглядят правильно. Первоначально я думал, что это из-за моего обычая Vertex класс, но он реализует Writable, поэтому я не уверен, почему это вызовет проблему. Любая помощь будет очень признательна. Спасибо

ответ

1

Ваши ключи должны реализовать интерфейс WritableComparable и соответствовать типу, указанному в классах Mapper и Reducer. Например, в второй у вас есть:

Mapper<LongWritable, Vertex, LongWritable, Vertex>

Но в методе map вы используете long. Это должно соответствовать типам, указанным в подписи, то есть LongWritable. Таким образом, параметры второй карты должны выглядеть следующим образом:

map(LongWritable key, Vertex value, Context context)

Все последние четыре класса имеют эту проблему.

+0

Спасибо, просто нужен еще один набор глаз, чтобы найти проблему ха-ха. Это фиксировало это. – xPeaWhyTee

Смежные вопросы