无法访问reduce类中的reduce方法

时间:2015-03-06 21:13:40

标签: hadoop mapreduce reduce reducers

 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;
    }
}

没有任何错误。我可以访问该类,因为我可以启动这些变量txtReduceOutputKeytxtReduceOutputValue。但执行时忽略reduce方法。所以我无法在上面的方法中运行代码//一些代码。我也在使用以下包裹。

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

我知道如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

请确保您已在驱动程序代码中设置 Reducer类。 例如: -

job.setReducerClass(Base_Reducer.class);

答案 1 :(得分:0)

这些问题是由于以下几个原因引起的:

  1. 不覆盖reduce()方法 - 最好使用override进行注释
  2. 如前面的评论所述,忘记在驱动程序代码中设置reducer

答案 2 :(得分:0)

这是因为Iterator。它应该被Iterable取代。 谢谢。