더북(TheBook)

6.2.2.1 스파크-카프카 커넥터 사용

스파크가 제공하는 카프카 커넥터에는 리시버 기반 커넥터(receiver-based connector)와 (최신의) 다이렉트 커넥터(direct connector)가 있다. 다이렉트 커넥터는 입력된 메시지를 정확히 한 번(exactly-once) 처리할 수 있는 반면, 리시버 기반 커넥터에서는 간혹 메시지 한 개를 여러 번 읽어 오기도 한다. 또 리시버 기반 커넥터는 연산 성능이 다소 뒤떨어진다는 단점이 있다(리시버 기반 커넥터는 데이터 유실을 방지하려고 로그 선행 기입(write-ahead logging) 기법을 사용하는데, 그만큼 계산 속도가 감소한다).

카프카 토픽의 데이터를 읽어 DStream을 생성하려면, 먼저 카프카 설정에 필요한 매개변수들을 Map 객체로 구성해야 한다. 이 Map에는 최소한 카프카 브로커(broker) 주소를 가리키는 metadata.broker.list 매개변수를 반드시 포함해야 한다. 또 metadata.broker.list 대신 bootstrap.servers 매개변수에 같은 값을 설정할 수도 있다. 스파크 셸과 카프카 서버를 동일 머신에서 실행하는 가상 머신을 사용할 때는 가상 머신의 IP 주소(192.168.10.2)와 카프카의 기본 포트 번호(9092)를 다음과 같이 설정한다.

val kafkaReceiverParams = Map[String, String]("metadata.broker.list" -> "192.168.10.2:9092")
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.