더북(TheBook)

6.1.9.2 소켓 입력 스트림

스파크 스트리밍을 사용해 TCP/IP 소켓에서 바로 데이터를 수신할 수도 있다. 소켓 데이터는 socketStreamsocketTextStream 메서드로 읽어 올 수 있다. socketTextStream은 이름 그대로 각 요소가 텍스트, 즉 UTF-8로 인코딩한 문자열 줄로 구성된 DStream을 반환한다. 메서드를 호출하려면 소켓이 연결할 호스트네임과 포트 번호를 전달해야 한다. 또 StorageLevel을 선택 인자로 지정할 수 있다. (기본 값은 StorageLevel.MEMORY_AND_DISK_SER_2다. 이는 복제 계수를 2로 설정하고 RDD를 메모리와 디스크에 저장한다는 의미다.) StorageLevel은 데이터가 보관될 위치와 데이터 복제 여부를 결정한다.

socketStream 메서드에도 socketTextStream과 동일한 목록의 인자를 지정해야 하며, 변환 함수를 추가로 전달해야 한다. 변환 함수는 이진 데이터를 읽는 자바 InputStream 객체를 결과 DStream의 요소가 될 객체로 변환해야 한다. socketStream 메서드(또는 socketTextStream 메서드)로 소켓 입력 스트림을 시작하면 이 스트림의 리시버는 여러 클러스터 노드 중 오직 단일 노드의 단일 실행자에서만 실행된다.4

 

4 역주 소켓 스트림을 여러 개 생성해 이 제약 사항을 극복할 수 있다. 자세한 내용은 스파크 지라 이슈( https://goo.gl/1MVvqD)를 참고하자.

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