더북(TheBook)

6.1.9.1 파일 입력 스트림

파일의 데이터는 binaryRecordsStream 메서드나 (더 범용적인) fileStream 메서드로 읽을 수 있다. 이 메서드들은 textFileStream과 마찬가지로 특정 폴더 아래 새로 생성된 파일들을 읽어 들인다. 차이점은 텍스트 외 다른 유형의 파일을 읽을 수 있다는 것이다.

binaryRecordsStream 메서드는 이진 파일에서 특정 크기의 레코드를 읽어 들여(폴더 이름과 레코드 크기를 인수로 전달한다) 바이트 배열(Array[Byte])로 구성된 DStream을 반환한다. fileStream 메서드를 사용하는 방법은 조금 더 복잡한데, 메서드의 타입 매개변수로 키의 클래스 타입과 값의 클래스 타입, HDFS 파일을 읽는 데 사용할 입력 포맷의 클래스 타입(하둡의 NewInputFormat 클래스를 상속한 하위 클래스)을 지정해야 한다. fileStream 메서드는 지정된 키 타입과 값 타입의 튜플을 요소로 포함한 DStream을 반환한다.

fileStream 메서드에는 타입 매개변수 외에 파일을 읽어 들일 폴더 경로를 전달해야 하며, 다음 선택 인수들을 추가로 지정할 수도 있다.

filter 함수:Path 객체(하둡에서 파일을 표현하는 클래스)별로 해당 파일의 처리 여부를 판단한다[함수는 불(Boolean) 타입의 값을 반환해야 한다].

newFilesOnly 플래그: 모니터링 폴더 아래에 새로 생성된 파일만 처리할지, 아니면 폴더의 모든 파일을 처리할지 지정한다.

하둡Configuration 객체: HDFS 파일을 읽는 데 필요한 추가 옵션들을 설정한다.

하둡 API로 파일을 읽어 들이는 방법은 지면 관계상 자세히 설명하지 않는다. 자세한 내용은 알렉스 홈즈가 쓴 <하둡 인 프랙티스>(위키북스, 2013)를 참고하자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.