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 |
댓글