복붙노트

[HADOOP] FileInputFormat을 사용하여 맵 메소드에서 행 번호 가져 오기

HADOOP

FileInputFormat을 사용하여 맵 메소드에서 행 번호 가져 오기

내지도 방법으로 줄 번호를 얻을 수 있는지 궁금합니다. 입력 파일은 다음과 같은 단일 값 열입니다.

Apple
Orange
Banana

키 : 1, 값 : Apple, 키 : 2, 값 : 주황색 ...지도 방법에서 얻을 수 있습니까?

CDH3 / CDH4 사용. KeyValueInputFormat을 사용하도록 입력 데이터를 변경하는 것은 옵션이 아닙니다. 미리 감사드립니다.

해결법

  1. ==============================

    1.TextInputFormat과 같은 InputFormats의 기본 동작은 실제 줄 번호가 아닌 레코드의 바이트 오프셋을 제공하는 것입니다. 이는 주로 입력 파일이 분리 가능하고 둘 이상 처리 될 때 실제 줄 번호를 결정할 수 없기 때문입니다. 매퍼.

    TextInputFormat과 같은 InputFormats의 기본 동작은 실제 줄 번호가 아닌 레코드의 바이트 오프셋을 제공하는 것입니다. 이는 주로 입력 파일이 분리 가능하고 둘 이상 처리 될 때 실제 줄 번호를 결정할 수 없기 때문입니다. 매퍼.

    바이트 오프셋 대신 행 번호를 생성하기 위해 TextInputFormat 및 연관된 LineRecordReader를 기반으로 자체 InputFormat을 작성할 수 있지만 isSplittable 메소드에서 false를 리턴하도록 입력 형식을 구성해야합니다 (큰 입력 파일이 여러 매퍼에 의해 처리됨). 작은 파일이나 HDFS 블록 크기에 가까운 파일이 있으면 문제가되지 않습니다. 또한 분할 불가능한 압축 형식 (예 : GZip .gz)은 전체 파일이 단일 맵퍼에 의해 처리됨을 의미합니다.

  2. from https://stackoverflow.com/questions/15543827/get-line-number-in-map-method-using-fileinputformat by cc-by-sa and MIT license