2011-10-07 5 views
4

업데이트 : 좋아, 그것은 내가 새로운이다 import org.apache.hadoop.mapreduce 대 이전 인 InputFormat API의 최신 버전 (import org.apache.hadoop.mapred를 사용하고 있기 때문에 아래에 작동하지 않는이 이유를 밝혀). 내가 가진 문제는 기존 코드를 새로운 코드로 이식하는 것이다. 누구든지 이전 API를 사용하여 다중 회선 InputFormat을 작성한 경험이 있습니까?사용자 정의 InputFormat와 하이브


Hadoop/Hive를 사용하여 Omniture의 데이터 로그 파일을 처리하려고합니다. 파일 형식은 탭으로 구분되며 대개는 매우 단순하지만 백 슬래시 (\\n\\t)로 이스케이프 처리되는 필드 내에 여러 줄과 탭을 사용할 수 있습니다. 결과적으로 하이브가 탭에서 분할을 시도 할 때 여러 개의 줄 바꿈을 처리하고 해당 탭을 공백으로 변환하는 자체 InputFormat을 만드는 것으로 선택했습니다. 난 그냥 하이브에서 테이블에 몇 가지 예제 데이터를로드하려고 다음과 같은 오류가있어 :

CREATE TABLE (...) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
STORED AS INPUTFORMAT 'OmnitureDataFileInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'; 

FAILED: Error in semantic analysis: line 1:14 Input Format must implement InputFormat omniture_hit_data 

이상한 것은 내 입력 형식이 org.apache.hadoop.mapreduce.lib.input.TextInputFormat (https://gist.github.com/4a380409cd1497602906)를 확장 않습니다이다.

하이브는 org.apache.hadoop.hive.ql.io.HiveInputFormat을 대신 확장해야합니까? 그렇다면 InputFormat 및 RecordReader에 대한 기존 클래스 코드를 다시 작성해야합니까, 아니면 효과적으로 확장 한 클래스를 변경할 수 있습니까?

답변

관련 문제