[HADOOP] job.setOutputKeyClass 및 job.setOutputReduceClass는 어디에 사용됩니까?
HADOOPjob.setOutputKeyClass 및 job.setOutputReduceClass는 어디에 사용됩니까?
나는 그들이 감속기를 언급한다고 생각했지만 내 프로그램에서
공용 정적 클래스 MyMapper 확장
매퍼
과
공용 static 클래스 MyReducer extends 감속기 <텍스트, 텍스트, NullWritable, 텍스트>
그래서 내가 가진다면
job.setOutputKeyClass (NullWritable.class);
job.setOutputValueClass (Text.class);
나는 다음 예외를 얻는다.
지도에서 키에 유형이 일치하지 않습니다 : 예상 org.apache.hadoop.io.NullWritable, 수신 된 org.apache.hadoop.io.Text
하지만 내가 가진다면
job.setOutputKeyClass (Text.class);
문제 없습니다.
sth 내 코드가 잘못 되었나요? 아니면 NullWritable 또는 sth 때문에 발생합니까?
또한 job.setInputFormatClass와 job.setOutputFormatClass를 사용해야합니까? 내 프로그램이 제대로 실행되지 않기 때문에.
해결법
-
==============================
1.호출 job.setOutputKeyClass (NullWritable.class); 지도 및 감축 단계에서 출력으로 예상되는 유형을 설정합니다.
호출 job.setOutputKeyClass (NullWritable.class); 지도 및 감축 단계에서 출력으로 예상되는 유형을 설정합니다.
Mapper가 Reducer와 다른 유형을 방출하는 경우 JobConf의 setMapOutputKeyClass () 및 setMapOutputValueClass () 메소드를 사용하여 맵퍼가 생성하는 유형을 설정할 수 있습니다. 이들은 암묵적으로 감속기가 예상하는 입력 유형을 설정합니다.
(출처 : Yahoo Developer Tutorial)
두 번째 질문에 대해서는 기본 InputFormat이 TextInputFormat입니다. 이것은 각 입력 파일의 각 행을 별도의 레코드로 취급하고 구문 분석을 수행하지 않습니다. 입력을 다른 형식으로 처리해야하는 경우 이러한 메소드를 호출 할 수 있습니다. 다음은 몇 가지 예입니다.
InputFormat | Description | Key | Value -------------------------------------------------------------------------------------------------------------------------------------------------------- TextInputFormat | Default format; reads lines of text files | The byte offset of the line | The line contents KeyValueInputFormat | Parses lines into key, val pairs | Everything up to the first tab character | The remainder of the line SequenceFileInputFormat | A Hadoop-specific high-performance binary format | user-defined | user-defined
OutputFormat의 기본 인스턴스는 텍스트 파일의 개별 행에 (키, 값) 쌍을 기록하는 TextOutputFormat입니다. 아래의 몇 가지 예 :
OutputFormat | Description --------------------------------------------------------------------------------------------------------- TextOutputFormat | Default; writes lines in "key \t value" form SequenceFileOutputFormat | Writes binary files suitable for reading into subsequent MapReduce jobs NullOutputFormat | Disregards its inputs
(출처 : 기타 야후 개발자 자습서)
from https://stackoverflow.com/questions/14225205/where-does-job-setoutputkeyclass-and-job-setoutputreduceclass-refers-to by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Java에서 HDFS 및 로컬 파일 읽기 (0) | 2019.06.03 |
---|---|
[HADOOP] 원격 호스트에서 Java API, 사용자 인증을 통한 HDFS 액세스 (0) | 2019.06.03 |
[HADOOP] 하둡의 텍스트와 문자열의 차이점 (0) | 2019.06.03 |
[HADOOP] Spark 반복적 인 HDFS 디렉토리 (0) | 2019.06.03 |
[HADOOP] 지도 축소에 대한 유일한 장점을 캐싱하고 있습니까? (0) | 2019.06.03 |