Kafka Strem

Overview

Concepts

Topology

Time

States

Window

Hopping time windows

Tumbling time windows

Sliding windows

Join

API

Low-Level Processor API

High-Level DSL API

 

Overview

Kafka Stream特点

》简单轻量的SDK

》除了对Kafka本身的依赖外,无外部依赖

》支持容错的local state从而支持高效的状态操作,如JoinWindow操作

Record级别的处理

》提供两种处理原语,Processor APIDSL

Concepts

Stream Topology

Stream时间上无解的,有序的,不可变数据集

Stream Processing application通过一个或多个Topology定义的计算逻辑

Stream processor一个计算原语,类似于StormBolt

Time

Event Time消息创建时间,一般由消费携带

Processing Time消息被处理的时间

Ingestion Time消息存入Topic/Partition时的时间

State

In-memory State Store(类似Hash表,将结果存在内存中)

Persistent State Store(一份存内存,一份存磁盘)

 

Window

Hopping time windows

Advance interval 结果输出interval

Window size计算数据集

》使用场景:Advance interval1个小时,Window size1s1s刷新一次,我能知道每秒后前一个小时的pv/uv

Tumbling time windows

Hopping time windows的特例(Advance interval=Window size

》使用场景:统计每一个小时的pv/uv是多少

Sliding windows

》只用于Join操作,可由JoinWindow类指定

 

KStream vs. KTable

KStream

KStream为数据流,每条消息代表一条不可变的新纪录

Ktable

KTablechange log流,每条消息代表一个更新,几条key相同的消息会将该key的值更新为最后一条消息的值

Example

》对于KStreamKTable中插入两条消息(“key”,1),(“key2”,2)

》对KStreamsum,结果为(“key1”,3)

》对KTablesum,结果为(“key1”,2)

 

Join

KSream-KStream Join

》适用于Window Join

》结果为KStream

KStream-KTable Join

KTable的变化只影响KStream中新数据

》新结果的输入由KStream驱动

》输出为KStream

KTable-KTable join

》类似于RDBMSJoin

》结果为KTable

 

posted @ 2017-08-29 16:30  一寂知千秋  阅读(493)  评论(0编辑  收藏  举报