[HADOOP] Hadoop 프로그램에서 출력 키 / 값 클래스를 명시 적으로 설정해야하는 이유는 무엇입니까?
HADOOPHadoop 프로그램에서 출력 키 / 값 클래스를 명시 적으로 설정해야하는 이유는 무엇입니까?
"Hadoop : The Definitive Guide"책에는 아래 코드가있는 샘플 프로그램이 있습니다.
JobConf conf = new JobConf(MaxTemperature.class);
conf.setJobName("Max temperature");
FileInputFormat.addInputPath(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1]));
conf.setMapperClass(MaxTemperatureMapper.class);
conf.setReducerClass(MaxTemperatureReducer.class);
conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(IntWritable.class);
MR 프레임 워크는 JobConf 클래스에서 설정되는 Mapper 및 Reduce 함수의 출력 키 및 값 클래스를 알아낼 수 있어야합니다. 왜 JobConf 클래스에서 출력 키와 값 클래스를 명시 적으로 설정해야합니까? 또한 입력 키 / 값 쌍에 대한 유사한 API가 없습니다.
해결법
-
==============================
1.이유는 유형 삭제 [1]입니다. generics로 출력 K / V 클래스를 설정합니다. 작업 설정 (컴파일 타임이 아닌 런타임)에서는 이러한 제네릭이 지워집니다.
이유는 유형 삭제 [1]입니다. generics로 출력 K / V 클래스를 설정합니다. 작업 설정 (컴파일 타임이 아닌 런타임)에서는 이러한 제네릭이 지워집니다.
입력 k / v 클래스는 입력 파일에서 읽을 수 있습니다. SequenceFile의 경우 클래스가 헤더에 있습니다. 편집기에서 시퀀스 파일을 열 때 클래스를 읽을 수 있습니다. 모든 헤더 출력은 SequenceFile이므로이 헤더를 작성해야하므로 클래스를 제공해야합니다.
[1] http://download.oracle.com/javase/tutorial/java/generics/erasure.html
from https://stackoverflow.com/questions/7461249/why-do-we-need-to-set-the-output-key-value-class-explicitly-in-the-hadoop-progra by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop Map Reduce에서 PDF 파일 파싱 (0) | 2019.07.27 |
---|---|
[HADOOP] Hadoop을 Google Cloud Storage에 연결할 수 없습니다. (0) | 2019.07.27 |
[HADOOP] HBase 테이블에서 모든 열 이름을 가져올 수 있습니까? (0) | 2019.07.27 |
[HADOOP] Spark 클러스터 및 Cassandra 용 JanusGraph 설정 및 구성 (0) | 2019.07.27 |
[HADOOP] Hadoop : Writable 인터페이스없이 출력 값으로 객체를 가지는 쉬운 방법 (0) | 2019.07.27 |