Search

Apache Flink Windowing

Apache Flink와 실시간 스트리밍 데이터 분석의 가장 큰 장점이라 할 수 있는 Windowing은
어떤 시간적 범위 내에서 발생한 레코드들의 대한 어그레이션을 계산할 수 있도록 하는 기능이다.
이때 이 시간적 범위를 나누는 여러가지 Windowing 방식들이 있다.

TUMBLE

SELECT window_start, window_end, SUM(`size`) AS total_size FROM TABLE(TUMBLE(TABLE acclog, DESCRIPTOR(`time`), INTERVAL '15' SECOND)) GROUP BY window_start, window_end;
SQL
복사
가장 일반적인 Window 방식으로 특정 시간마다 새롭게 새 윈도우를 시작하는 방식이다.

HOP

SELECT window_start, window_end, SUM(`size`) AS total_size FROM TABLE(HOP(TABLE acclog, DESCRIPTOR(`time`), INTERVAL '15' SECOND, INTERVAL '30' SECOND)) GROUP BY window_start, window_end;
SQL
복사
슬라이딩 윈도우라고도 부르는 HOP은 Window Size는 유지하되 Window Slide 만큼만 옆으로 옮겨서 여러 Window Slide 가 한번에 담기도록 하는 방식이다.

CUMULATE

SELECT window_start, window_end, SUM(`size`) AS total_size FROM TABLE(CUMULATE(TABLE acclog, DESCRIPTOR(`time`), INTERVAL '10' SECOND, INTERVAL '30' SECOND)) GROUP BY window_start, window_end;
SQL
복사
CUMULATE 방식은 맨 처음 Window Step만큼의 크기를 가진 Window에서 시작하여
Window Step이 종료되면 해당 윈도우 처음 부분부터 그다음 Window Step까지 Window Size를 늘려 다음 윈도우를 진행하며
이런식으로 진행하다 Max Window Size에 도달하면 이 과정을 처음부터 다시 시작하는 방식이다.