본문 바로가기
Data Analysis/Data streams

window 할당 방식

by SeleniumBindingProtein 2024. 2. 1.
728x90
반응형

pyflink 라이브러리를 이용

 

1. 텀블링(Tumbling) 윈도우:

  • 설명: 텀블링 윈도우는 일정한 크기의 고정 시간 간격으로 데이터를 처리하는 방식입니다. 각 윈도우는 서로 겹치지 않고, 데이터 스트림이 일정 시간 간격으로 분리되어 처리됩니다.
  • 예제 코드:

tumbling_window_result = data_stream\ 
.key_by(lambda x: x[0])\ 
.window(TumblingEventTimeWindows.of(Time.seconds(5)))\ 
.reduce(lambda x, y: (x[0], x[1] + y[1]))
  • 예제 설명: 데이터 스트림을 5초 단위로 처리하도록 텀블링 윈도우를 설정하였습니다. 각 윈도우에서는 동일한 키를 가진 데이터가 모여서 합산되어 출력됩니다.

2. 슬라이딩(Sliding) 윈도우:

  • 설명: 슬라이딩 윈도우는 일정한 크기의 시간 간격으로 윈도우를 생성하면서, 겹치는 부분을 가지는 윈도우를 사용합니다. 즉, 윈도우가 겹치면서 일정 간격으로 이동하며 데이터를 처리합니다.
  • 예제 코드:
sliding_window_result = data_stream\ 
.key_by(lambda x: x[0])\ 
.window(SlidingEventTimeWindows.of(Time.seconds(10), Time.seconds(5)))\ 
.reduce(lambda x, y: (x[0], x[1] + y[1]))
  • 예제 설명: 10초 크기의 윈도우를 5초 간격으로 슬라이딩하도록 설정하였습니다. 따라서 겹치는 윈도우 부분이 있으며, 각 윈도우에서는 동일한 키를 가진 데이터가 모여서 합산되어 출력됩니다.

3. 세션(Session) 윈도우:

  • 설명: 세션 윈도우는 데이터 스트림에서 일정 시간 동안 데이터가 발생하지 않으면 해당 세션을 종료하고 새로운 세션을 시작합니다.
  • 예제 코드:
session_window_result = data_stream\ 
.key_by(lambda x: x[0])\ 
.window(SessionEventTimeWindows.with_gap(Time.seconds(5)))\ 
.reduce(lambda x, y: (x[0], x[1] + y[1]))
  • 예제 설명: 데이터 스트림에서 5초 간격으로 데이터가 발생하지 않으면 해당 세션을 종료하고 새로운 세션을 시작하도록 설정하였습니다. 각 세션에서는 동일한 키를 가진 데이터가 모여서 합산되어 출력됩니다.

4. 글로벌(Global) 윈도우:

  • 설명: 글로벌 윈도우는 전체 데이터 스트림에 대해 하나의 윈도우를 사용합니다.
  • 예제 코드:
global_window_result = data_stream\ 
.key_by(lambda x: x[0])\ 
.window(GlobalWindows())\ 
.reduce(lambda x, y: (x[0], x[1] + y[1]))
  • 예제 설명: 글로벌 윈도우는 전체 데이터 스트림에 대해 하나의 윈도우를 생성하도록 설정하였습니다. 따라서 모든 데이터가 하나의 윈도우에서 합산되어 출력됩니다.
728x90
반응형

댓글