0

我正在比较 O'Reilly 的书Hadoop: The Definitive Guide(Tom White,第 3 版)中的示例 Java 代码和我自己重新创建/理解它的尝试。我遇到的问题如下:

书中的类编译得很好:

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 cannot be dereferenced:”的编译错误:

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 新手,想了解其中的区别;为什么示例类工作,但我的片段不是?

4

1 回答 1

0

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

于 2012-12-13T21:51:38.223 回答