[HADOOP] Hadoop Array로 작성된 값 읽기
HADOOPHadoop Array로 작성된 값 읽기
저는 Hadoop과 Java를 처음 사용합니다. 내 매퍼는 텍스트와 Arraywritable을 출력합니다. ArrayWritable 값을 읽는 데 문제가 있습니다. .get () 값을 정수로 캐스트하지 마십시오. 매퍼 및 감속기 코드가 첨부되어 있습니다. ArrayWritable 값을 읽으려면 리듀서 코드를 수정하도록 도와 줄 수 있습니까?
public static class Temp2Mapper extends Mapper<LongWritable, Text, Text, ArrayWritable>{
private static final int MISSING=9999;
@Override public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException{
String line = value.toString();
String date = line.substring(07,14);
int maxTemp,minTemp,avgTemp;
IntArrayWritable carrier = new IntArrayWritable();
IntWritable innercarrier[] = new IntWritable[3];
maxTemp=Integer.parseInt(line.substring(39,45));
minTemp=Integer.parseInt(line.substring(47,53));
avgTemp=Integer.parseInt(line.substring(63,69));
if (maxTemp!= MISSING)
innercarrier[0]=new IntWritable(maxTemp); // maximum Temperature
if (minTemp!= MISSING)
innercarrier[1]=new IntWritable(minTemp); //minimum temperature
if (avgTemp!= MISSING)
innercarrier[2]=new IntWritable(avgTemp); // average temperature of 24 hours
carrier.set(innercarrier);
context.write(new Text(date), carrier); // Output Text and ArrayWritable
}
}
public static class Temp2Reducer
extends Reducer<Text, ArrayWritable, Text, IntWritable>{
@Override public void reduce(Text key, Iterable<ArrayWritable> values, Context context )
throws IOException, InterruptedException {
int max = Integer.MIN_VALUE;
int[] arr= new int[3];
for (ArrayWritable val : values) {
arr = (Int) val.get(); // Error: cannot cast Writable to int
max = Math.max(max, arr[0]);
}
context.write( key, new IntWritable(max) );
}
}
해결법
-
==============================
1.ArrayWritable # get 메소드는 Writable의 배열을 리턴합니다.
ArrayWritable # get 메소드는 Writable의 배열을 리턴합니다.
쓰기 가능한 배열을 int로 캐스팅 할 수 없습니다. 당신이 할 수있는 일은 :
from https://stackoverflow.com/questions/21106146/read-values-wrapped-in-hadoop-arraywritable by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 세미콜론으로 구분 된 필드가있는 하나의 열이있는 .csv 파일에서 Hive 테이블을 만들려면 어떻게해야합니까? (0) | 2019.08.17 |
---|---|
[HADOOP] HADOOP mapreduce pgm을 사용하여 각 텍스트 값을 XML로 계산 (0) | 2019.08.17 |
[HADOOP] Mapper를 Multi thread Mapper로 교체 할 때 키와 키가 일치하지 않는 유형 (0) | 2019.08.17 |
[HADOOP] 하이브에서 문자열을 어떻게 배열로 변환합니까? (0) | 2019.08.17 |
[HADOOP] 함수를 사용한 하이브 변수 대체 (0) | 2019.08.17 |