2015-03-06 1 views
0
public static class Reduce extends Reducer<Text, Text, Text, Text> 
    { 
     private Text txtReduceOutputKey = new Text(""); 
     private Text txtReduceOutputValue = new Text(""); 
    public void reduce(Text key, Iterator<Text> values, Context context) throws IOException, InterruptedException 
    { 
     //some code; 
    } 
} 

Это не дает никаких ошибок. Я могу получить доступ к классу, так как я могу инициировать эти переменные txtReduceOutputKey и txtReduceOutputValue. но метод reduce игнорируется во время выполнения. Поэтому я не могу запустить код // некоторый код в указанном выше методе. Также я использую ниже пакеты.не удалось получить доступ к методу уменьшения в классе снижения

import org.apache.hadoop.mapreduce.Mapper; 
import org.apache.hadoop.mapreduce.Reducer; 
import org.apache.hadoop.mapreduce.Job; 

Любая идея, как я могу это исправить?

ответ

0

Удостоверьтесь, что вы установили класс редуктора в код драйвера. Например: -

job.setReducerClass(Base_Reducer.class); 
0

Такие проблемы возникают из-за пары причин, как показано ниже:

  1. Не отменяя метод reduce() - это лучше пояснением override
  2. Как уже упоминалось в предыдущем комментарии, забыв установить редуктор в код драйвера
0

Это было из-за Iterator. его следует заменить на Iterable. Спасибо.