본문 바로가기
DataOps/Kafka

[Kafka] Kafka Stream

by BenKangKang 2024. 6. 5.

Stream?

- 컴퓨터 과학에서 스트림이란 연속적인 데이터의 흐름, 일정한 데이터 조각의 연속을 의미한다

- 일반적으로 Stream 은 업데이트하지 않고, 지우지 않고 쌓기만 한다. 끝이 정해지지 않고 계속되는 불규칙한 데이터를 연속으로 반복 처리할 때 이 또한 스트림 처리라고 부른다.

- Data가 순차적으로 도착하여 특정한 컨텐츠를 구성하거나 그 자체가 컨텐츠가 되는 데이터의 흐름 흔히 음악, 영상 등이 실시간으로 송출되어 컨텐츠를 구성할 때 Streaming Service 라고한다.

 

Kafka Streams? 

 

- Kafka Stream은 데이터를 연속적인 레코드로 취급하고, Kafka에 저장된 토픽에서 데이터를 읽어 들여 처리하며, 처리 결과를 다시 Kafka 토픽에 출력해주는 Library, Framework이다.

-> Topic으로 들어오는 데이터를 Consume하여 Kafka Streams에서 제공하는 처리 로직을 통해 처리 후 다른 Topic으로 전송해주는 라이브러리.

 

특징

1. Stream

- 시간경과에 따라 지속적으로 생성되는 data record들을 만들 수 있음

CREATE STREAM PURCHASE_STREAM (USERID VARCHAR, PRODUCT VARCHAR, AMOUNT DOUBLE) \\
WITH (KAFKA_TOPIC='purchase', VALUE_FORMAT='JSON');

 

2. Data 변환

- data의 변환 및 가공, 필터링, 매핑, aggregation등을 수행가능

CREATE STREAM PURCHASE_AMOUNT_OVER_100 AS
SELECT USERID, PRODUCT, AMOUNT FROM PURCHASE_STREAM
WHERE AMOUNT > 100;

 

3. 상태관리

- 상태를 관리하고 스트림 처리 작업 간에 상태를 공유

CREATE STREAM PURCHASE_WITH_AGE AS \\ SELECT P.USERID, P.PRODUCT, P.AMOUNT, U.AGE
FROM PURCHASE_STREAM P LEFT JOIN USER_BEHAVIOR U ON P.USERID = U.USERID;

 

4. Window처리

- 시간 기반 또는 이벤트 기반 window를 사용하여 데이터를 집계하고 분석할 

CREATE TABLE PURCHASES_PER_HOUR AS
SELECT WINDOWSTART(), COUNT(*)
FROM PURCHASE_STREAM
WINDOW TUMBLING (SIZE 1 HOUR)
GROUP BY WINDOWSTART();

 

'DataOps > Kafka' 카테고리의 다른 글

[Kafka] 트랜잭션, exactly-once  (0) 2024.06.24
[Kafka] KSQL  (0) 2024.06.05
[Kafka] MirrorMaker2  (0) 2024.06.05
[Kafka] Kafka Connect 란?  (0) 2024.06.05
[Kafka] 컨슈머 그룹 - 토픽 컨슘 관계(?) 삭제  (0) 2024.05.02

댓글