본문 바로가기
빅데이터/Hadoop

SPARK STREAMING 데이터 중복처리

by 처리2 2020. 7. 20.
반응형

예시로 의미없는 로그 데이터를 스트리밍 처리하는 예제를 하고 출력하는 부분까지 완료했었다.

 

나는 로그에대해 counting을해서 3개 이상이 되면 메일전송과 DB에 저장하는 기능을 추가하고 싶었다.

 

하지만 ReducebykeyandWindow를 사용하여 RDD값을 출력하니..... 윈도우에 남아있는 값들을 계속 뽑아내는 현상을 발견했다. 

 

첫번째 ----- ReduceByKeyAndWindow를 실행할때 키를 체크하여 처리해주는 함수에서 Counting 하여 처리하는 방법

.

.

.

하지만... value값만 가져올 수 있고 key값을 가져오지 못해서 실패

 

두번째  ---- reduceBykeyAndWindow에 두번째 함수 즉.. 윈도우가 끝날때 중복체크해주는 함수가 있지만 이미 key로 중복을 제거한 상태이기도 하고 윈도우 안에서 진행되는 동안에는 원하는 counting 값이 계속 유지가 된다.... 

 

*** 마지막 ----- java단에서의 map함수로 담아 구분하기

기존에 우리는 spark Streaming값을 java Controller 단으로 보내는 연결 작업을 하였다. 

 

그래서 나는 java에 데이터를 보낸 뒤 구분하여 DB저장과 메일보내는 기능을 만들어냈다.

 

 

GET 방식으로 데이터를 전송하면 params 라는 map함수로 담는다

 

처음 ip와 count가 들어오면 현재 시간을 구하여 ip와 시간을 map에 담는다

 

그 이후 if를 통해 상황 처리 나는 윈도우 갱신을 4초로 설정하였기 때문에 같은 값이 4초가 넘지않으면 map에 담지 못하게 하였다..

 

이후 실행 성공!!!

 

지식이 늘었다.

반응형

'빅데이터 > Hadoop' 카테고리의 다른 글

KAFKA 와 JAVA 의 HTTP 통신  (0) 2020.07.06
스파크 카프카 실시간 연동 구축  (0) 2020.07.01
SPARK 설치 후 zepplien까지 ~  (0) 2020.06.25
CentOs7 - Python 3.6.8 설치  (12) 2020.06.23
카프카 구축하기  (0) 2020.06.23

댓글