我正在比较O'Reilly的《 Hadoop:权威指南》(汤姆·怀特,第三版)中的示例Java代码,以及我自己尝试重新创建/理解它的尝试。我遇到的问题如下:

本书中的类(class)可以很好地编译:

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class MaxTemperatureReducer
  extends Reducer<Text, IntWritable, Text, IntWritable> {

  @Override
  public void reduce(Text key, Iterable<IntWritable> values,
      Context context)
      throws IOException, InterruptedException {

    int maxValue = Integer.MIN_VALUE;
    for (IntWritable value : values) {
      maxValue = Math.max(maxValue, value.get());
    }
    context.write(key, new IntWritable(maxValue));
  }
}

但是,当我尝试自己测试它的一部分时,出现了“无法取消引用int”的编译错误:
public class TestMinValue {
    public static void main(String[] args){
        int[] values = {1,2,3,4,5};
        int maxValue = Integer.MIN_VALUE;
        for(int value : values){
            maxValue = Math.max(maxValue, value.get());
}
}
}

我是Java新手,想了解它们之间的区别;为什么示例类正常工作,但是我的摘要却没有?

最佳答案

IntWritable类型是一个类,它具有get()方法。您正在使用原始类型int。基元在Java中没有方法。

09-27 01:59