2012-03-15 3 views
6

지도 축소 기능을 사용하는 Avro를 사용하는 것에 대해 혼란스러워하며 따라야 할 좋은 자습서를 찾을 수 없습니다.일반 텍스트 입력 및 avro 출력을 사용하는 mapreduce 작업

AvroJob 및 AvroMapper와 같은 클래스는 입력 및 출력이 모두 Avro 데이터 파일 일 때 문제가 발생하는 것으로 보입니다. 귀하의 의견이 일반 텍스트 일 ​​때는 어떻습니까?

구체적 :

내 맵퍼로 입력 LongWritable 키 및 텍스트 값 걸린다. 텍스트 키와 MyAvroRecord 값을 내 보냅니다.

내 감속기는 텍스트 키와 MyAvroRecords의 반복자를 입력으로 받아 텍스트 키와 MyAvroRecord 값을 내 보냅니다.

이러한 텍스트 키와 MyAvroRecord 값을 파일에 쓰는 OutputFormat을 어떻게 구합니까?

건배, 데이브

답변

6

좋아, 그래서 나는이 알아 냈어.

텍스트 키와 MyAvroRecord 값을 출력하는 매퍼가 아니라 AvroKey 키와 AvroValue 값을 생성해야했습니다. 그 결과를 AvroReducer에 바로 입력 할 수 있었고 AvroJob.setOutputSchema()를 사용하여 출력을 처리 할 수있었습니다 (OutputFormat을 전혀 구현할 필요가 없었습니다).

+0

안녕 데이브, 나는 반대에 STH을하려고하고있다. 내 입력은 텍스트이고 출력은 일반 레코드입니다. AvroJob을위한 Avro 입력 스키마를 설정하고 출력 스키마를 일반 레코드의 스키마로 설정하려고합니다. 그러나 AvroJob이 일반 텍스트임을 이해할 수 있도록 입력 스키마를 마무리하는 방법을 모르겠습니다. setInputSchema()를 아무것도 사용하지 말아야합니까? –

0

접근 방법은 다음과 같을 수 있습니다. 매퍼의 출력이 AvroKey 및 AvroValue 일 필요는 없습니다. 그것은 일반적인 감속기에 입력되는 일반적인 출력 유형이 될 수 있습니다. 감속기에서 우리는 아브로 변환을 할 수 있습니다. Outputformat 유형을 Avro로 설정합니다.

관련, sujoy

관련 문제