복붙노트

[HADOOP] 어떻게 하둡 입력 텍스트 파일에 대한 레코드 구분 기호로 탭을 지정하려면?

HADOOP

어떻게 하둡 입력 텍스트 파일에 대한 레코드 구분 기호로 탭을 지정하려면?

내 하둡 M / R 작업의 입력 파일은 기록을 탭 문자 'N \'대신 줄 바꿈의 '\의 t'로 구분 된 텍스트 파일입니다. 이 줄 바꿈을 주위 분할 및 텍스트 파일의 각 줄은 기록으로한다 기본적으로 어떻게 탭 문자를 사용하여 분할 하둡을 지시 할 수 있습니다.

그것을 할 수있는 한 가지 방법은 줄 바꿈 원래 스트림에 모든 탭 변환하는 필터 스트림을 사용하는 사용자 지정 입력 형식 클래스를 사용하는 것입니다. 하지만이 우아한 보이지 않는다.

또 다른 방법은 구분자로 탭 java.util.Scanner을 사용하는 것입니다. 하지만 입력 형식의 클래스에 java.util.Scanner 클래스를 사용하는 방법을 알아낼 수 없습니다.

최선의 방법과 대안은 무엇인가?

해결법

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

    1.값 '\ r에'와 '\ n'을 당신은 탭으로 구분 레코드 TextInputFormat을 사용할 수 있도록 org.apache.hadoop.util.LineReader 클래스에 하드 코딩. 그러나 특별한 LineReader 클래스와 자신의 InputFormat을 구현하기 어렵지 않다. 가장 간단한 해결책은 TextInputFormat, LineRecordReader 및 LineReader 클래스 붙여 넣기 복사 패키지로 이동하고 LineReader 구현을 변경하는 것입니다.

    값 '\ r에'와 '\ n'을 당신은 탭으로 구분 레코드 TextInputFormat을 사용할 수 있도록 org.apache.hadoop.util.LineReader 클래스에 하드 코딩. 그러나 특별한 LineReader 클래스와 자신의 InputFormat을 구현하기 어렵지 않다. 가장 간단한 해결책은 TextInputFormat, LineRecordReader 및 LineReader 클래스 붙여 넣기 복사 패키지로 이동하고 LineReader 구현을 변경하는 것입니다.

  2. from https://stackoverflow.com/questions/7271641/how-to-specify-tab-as-a-record-separator-for-hadoop-input-text-file by cc-by-sa and MIT license