327
22
장
임의 상태 기반 스트리밍 연산
22.3
updateStateByKey
의 한계
지금까지 설명한
updateStateByKey
함수를 사용하면 스파크 스트리밍을 사용하여 상태 기반
프로그래밍을 수행할 수 있다. 예를 들어 사용자 세션의 개념을 인코딩할 수 있는데, 이 경우 특
정 배치 간격이 현재 사용 중인 애플리케이션과 명확하게 일치하지 않는다. 이 접근법에는 두 가
지 문제가 있다. 이를 좀 더 자세히 살펴보자.
22.3.1
성능
첫 번째 문제는 성능과 관련이 있다.
updateStateByKey
함수는 실행이 시작된 이후 애플리케
이션의 프레임워크와 만나는 모든 키에서 실행된다. 이는 다소 희박한 데이터셋 (데이터의 다양
성과 특히 키의 다양성에 롱테일이 있다는 전제하에 )에서도 메모리에 표현된 총 데이터양이 무
한정 증가한다는 분명한 주장이 있기 때문에 문제가 된다.
예를 들어 애플리케이션 실행이 시작될 때 웹사이트에 키나 특정 사용자가 나타나는 경우 애플
리케이션 시작 이후(예: 지난달 이후 )에 이 특정 개인으로부터 세션을 보지 못했다는 것을 나타
내기 위해 해당 사용자의 상태를 업데이트하는 것은 어떤 관련이 있을까? 애플리케이션에 대한
이점은 명확하지 않다.
22.3.2
메모리 사용량
두 번째 문제는 상태가 무기한으로 커져서는 안 되므로 프로그래머는 메모리의 북키핑 (모든 키
에 대한 코드 작성)을 수행하여 해당 특정 요소에 대한 데이터의 상태를 유지하는 것이 여전히
적절한지 알아내야 한다는 것이다. 이는 메모리 관리를 위한 ...