Spark Streaming에서 창을 사용한 상태 저장 변환



이 블로그 게시물에서는 Spark Streaming의 창을 사용한 상태 저장 변환에 대해 설명합니다. 상태 저장 D-Stream을 사용하여 일괄 처리 데이터를 추적하는 방법에 대해 모두 알아보십시오.

Prithviraj Bose 제공

이 블로그에서는 Apache Spark의 상태 저장 변환의 창 개념에 대해 설명합니다.





상태 저장 변환이란 무엇입니까?

Spark 스트리밍은 들어오는 데이터가 기본 프로그래밍 추상화 역할도하는 DStream (Discretized Streams)이라는 마이크로 배치로 그룹화되는 마이크로 배치 아키텍처를 사용합니다. DStreams에는 내부적으로 RDD (Resilient Distributed Dataset)가 있으며이 표준 RDD 변환 및 작업을 수행 할 수 있습니다.



스트리밍에서 일괄 적으로 데이터를 추적하는 사용 사례가있는 경우 상태 기반 DStream이 필요합니다.

예를 들어 사용자 세션 중에 웹 사이트에서 사용자의 상호 작용을 추적하거나 시간에 따라 특정 트위터 해시 태그를 추적하여 전 세계 어느 사용자가 이에 대해 이야기하고 있는지 확인할 수 있습니다.

상태 저장 변환의 유형.



상태 저장 DStream은 창 기반 추적과 전체 세션 추적의 두 가지 유형이 있습니다.

상태 저장 추적의 경우 모든 수신 데이터를 키-값 쌍으로 변환하여 키 상태를 일괄 적으로 추적 할 수 있어야합니다. 이것은 전제 조건입니다.

또한 나중에 블로그에서 논의 할 개념 인 체크 포인트도 활성화해야합니다.

> 창 기반 추적

창 기반 추적에서는 들어오는 배치가 시간 간격으로 그룹화됩니다. 즉, 'x'초마다 그룹 배치가 그룹화됩니다. 이러한 배치에 대한 추가 계산은 슬라이드 간격을 사용하여 수행됩니다.

예를 들어 창 간격이 3 초이고 슬라이드 간격이 2 초이면 들어오는 모든 데이터가 3 초마다 배치로 그룹화되고 이러한 배치에 대한 계산은 2 초마다 발생합니다. 또는 마지막 3 초에 도착한 배치에 대해 2 초마다 계산을 수행한다고 말할 수 있습니다.

spark-streaming-dstream-window

위의 다이어그램에서 들어오는 배치는 3 단위 (창 간격)마다 그룹화되고 계산은 2 단위 (슬라이드 간격)마다 수행됩니다.
참고 : Apache Flink와 달리 Apache Spark에는 텀블링 창 개념이 없으며 모든 창이 슬라이딩됩니다.

창 기반 변환에 널리 사용되는 API는 다음과 같습니다.

배열 C ++ 정렬 방법

PairDStreamFunctions.reduceByKeyAndWindow .

이 API에는 오버로드 된 버전이 여러 개 있습니다. 매개 변수 수가 가장 많은 버전을 살펴 보겠습니다. 이 설명 후에이 API의 오버로드 된 나머지 버전은 자명해야합니다.

반환 : 변환 된 DStream [(K, V)]

reduceFunc : 연관 감소 기능.

invReduceFunc : 위 축소 기능의 역함수. 이것은 들어오고 나가는 배치를 효율적으로 계산하는 데 필요합니다. 이 기능의 도움으로 나가는 배치의 값은 위의 축소 기능의 누적 값에서 공제됩니다. 예를 들어, 각 키에 대해 들어오는 값의 합계를 계산하는 경우 나가는 배치에 대해 각 키의 값을 뺍니다 (현재 배치에 존재하는 경우 그렇지 않으면 무시 함).

windowDuration : 배치를 그룹화하는 시간 단위. 배치 간격의 배수 여야합니다.

slideDuration : 계산을위한 시간 단위. 배치 간격의 배수 여야합니다. 파티션 : 결과 DStream을 저장하는 데 사용할 파티 셔너입니다. 파티셔닝 읽기에 대한 자세한 정보 .

filterFunc : 만료 된 키-값 쌍을 필터링하는 기능입니다. 예를 들어 한동안 키에 대한 업데이트를받지 못한 경우 삭제하고 싶을 수 있습니다.

여기에 프로그램 소켓 스트림에서 나오는 단어를 계산합니다. 윈도우 간격 4 초, 슬라이드 간격 2 초로 위 함수의 오버로드 버전을 사용했습니다.

다음 블로그에서는 전체 세션 추적 및 체크 포인트에 대해 쓸 것입니다.

질문이 있으십니까? 의견란에 언급 해 주시면 연락 드리겠습니다.

관련 게시물:

브로드 캐스트 변수를 사용한 분산 캐싱