Hadoop大数据

Kafka Stream初学

2019-03-26  本文已影响6人  阿猫阿狗Hakuna

       Kafka Stream将其API分为两类,一类为高级抽象的Kafka Streams DSL,使用方便,但不够灵活;另一类为低级抽象的Processor API,使得开发者有了更多自由,比较灵活。下面简要介绍两类API。

一.Streams DSL

       Streams DSL是构建在Processor API之上的,相比于Processor API,DSL支持:

       下面简要介绍其中的主要类库及特性:

1.KStream

       只有DSL中有KStream的概念。KStream是一个流式记录的抽象,是一个无界的数据集。用一个表来类比,数据记录在一个流中可以理解为一直在进行“INSERT”的动作。只进行追加。

2.KTable

       只有DSL中有KTable的概念。KTable是一个changelog stream的抽象,每个数据记录都被表示为一个update。如果key在KTable中已经存在,则表示为一个“UPDATE”;如果不存在,则表示为一个“INSERT”。

3.GlobalKTable

       只有DSL中有GlobalKTable的概念。和KTable一样,GlobalKTable也是一个changelog stream的抽象,每个数据记录都被表示为一个update。
       KTable存储的数据根据key进行分区的,GlobalKTable是不分区的,且存储的数据足够小,能完全装入内存,因此保证每个流任务都有所有数据的完整副本,而不关心传入record的key是什么。
       基于以上的特性,GlobalKTable有如下优点:

4.Transformation

无状态Transformation

(1)branch(split):根据提供的判断式将KStream拆分到一个或多个KStream实例中。
(2)Filter
(3)Inverse Filter
(4)FlatMap
(5)Foreach
(6)GroupByKey
(7)GroupBy
(8)Map
(9)Merge
(10)Peek
(11)Print
(12)SelectKey:为记录分配新key。
(13)toStream:将KTable转换为KStream。

有状态Transformation

(1)Aggregate
(2)Count
(3)Reduce

5.Join

下图为其支持的Join类型:


image.png

6.Window

Kafka Streams支持四种类型的Window操作:


image.png

Processor API

       processor API允许开发人员自定义processor,且可以直接与state store进行交互。下面介绍其主要抽象:

1. Processor

       一个stream processor是processor拓扑图中的一个节点,用来表示单一的处理步骤。使用Processor API可以自定义stream processor,一次处理一个接收到的记录,并将这些processor与其关联的state store连接起来,组成processor拓扑图。
       Processor接口的主要方法如下:

2.State Store

       Kafka Stream中包含开箱即用的Store,通过StoreBuilder进行初始化;也可以实现自定义的Store,需要实现StateStore接口。
       现有State Store类型如下:
(1)PersistentKeyValueStore<K,V>:底层存储为RocksDB
(2)InMemoryKeyValueStore<K,V>

上一篇 下一篇

猜你喜欢

热点阅读