더북(TheBook)

6.4.2 스트리밍 데이터 출력

 

앞서 생성한 structStream은 지정된 입력 폴더를 모니터링하고 폴더 아래에 새로 생성된 파일들을 주기적으로 처리한다. 하지만 아직 파일을 처리할 로직을 정의하지 않았다. 스트리밍 DataFrame을 활용해 스트리밍 연산을 시작하려면 DataFramewriteStream 메서드를 사용해야 한다. 이 메서드는 DataStreamWriter 클래스의 인스턴스를 반환하며, 빌더 패턴을 사용해 DataStreamWriter를 설정할 수 있다. 다시 말해 다음 설정 함수들을 계속 이어 붙일 수 있다.

trigger: 스트리밍 연산을 수행할 시간 주기를 지정한다. 시간 주기는 ProcessingTime.create 함수로 설정한다[예: ProcessingTime.create("5 seconds")].

format: 출력 포맷을 지정한다. 스파크 버전 2.0에서는 parquet, console, memory만 지원한다.6 parquetDataFrame 데이터를 Parquet 파일로 저장하며 console은 (show() 메서드를 사용해) 콘솔에 출력한다. memory는 데이터를 드라이버의 메모리에 테이블 형태로 유지하며, 이 데이터에 대화형 쿼리를 실행할 수 있다.7

outputMode: 출력 모드를 지정한다.

option: 기타 특정 인자들을 지정한다.

foreach: 개별 DataFrame의 계산을 수행하는 데 사용한다. ForeachWriter 인터페이스를 구현한 클래스를 메서드 인수로 전달해야 한다.

queryName: memory 포맷을 사용할 때 테이블 이름을 지정한다.

스파크 버전 2.0은 다음 두 가지 출력 모드를 지원한다.8

append: 마지막 처리 결과를 출력한 이후에 유입된 데이터만 출력한다.

complete: 매번 전체 데이터를 출력한다. 집계 연산에만 사용할 수 있다.

 

6 역주 스파크 버전 2.2에서는 orc, json, csv도 지원한다.

 

7 역주 consolememory 포맷은 데이터를 드라이버로 가져오므로 소량의 데이터로 프로그램을 디버깅할 때만 사용해야 한다.

 

8 역주 스파크 버전 2.1.1부터는 update 모드도 지원한다.

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