2012-12-13 2 views
0

O'Reilly 서적 Hadoop : The Definitive Guide (Tom White, 제 3 판)의 Java 코드 예제를 다시 작성하고이를 다시 작성/이해하려고합니다.Hadoop book Java 클래스 예제를 사용하는 이유에 대해 설명합니다. 컴파일 오류가 없습니다. 그렇지 않으면 "int를 참조 해제 할 수 없습니다."

책에서 클래스는 잘 컴파일 :

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

내가 자바에 새로운 오전과의 차이를 이해하고 싶습니다; 예제 클래스가 작동하는 이유는 무엇입니까?

답변

0

IntWritable 유형은 get() 메소드를 갖는 클래스입니다. 대신 기본 유형 int을 사용하고 있습니다. 프리미티브에는 Java에서 메서드가 없습니다.

+0

감사합니다. 내 코드에서 {value.get()}을 {value}로 대체했으며 효과가있었습니다. – Marina

관련 문제