和Spark一样,Flink内置提供了读/写Kafka Topic的Kafka连接器(Kafka Connectors)。Flink Kafka Consumer和Flink的Checkpint机制进行了整合,以此提供了exactly-once处理语义。为了实现这个语义,Flink不仅仅依赖于追踪Kafka的消费者group偏移量,而且将这些偏移量存储在其内部用于追踪。
和Spark一样,Flink和Kafka整合的相关API也没有打包进Flink包中,而是单独进行了打包;所以如果我们需要在Flink中使用到Kafka,需要将这个包引入到我们的pom.xml文件中。本文以Flink 1.0.0和Scala 2.10.x为例进行说明,我们将下面的依赖引入到pom.xml文件中:
|
当然,在读取Kafka中的数据之前,需要确保你已经安装和部署好Kafka集群了,这里我就不介绍如何部署Kafka集群,可以参见:《Kafka分布式集群