1、概述
flink提供了一个特有的kafka connector去读写kafka topic的数据。flink消费kafka数据,并不是完全通过跟踪kafka消费组的offset来实现去保证exactly-once的语义,而是flink内部去跟踪offset和做checkpoint去实现exactly-once的语义
flink与kafka整合,相应版本对于的maven依赖如下表
maven依赖举例
1.7.0
2.11
2.11.12
org.apache.flink
flink-streaming-scala_${scala.binary.version}
${flink.version}
provided
2、代码整合
2.1、添加source:Kafka Consumer
flink利用FlinkKafkaConsumer来读取访问kafka, 根据kafka版本不同FlinkKafkaConsumer的类名也会变化,会变为FlinkKafkaConsumer
[08,09,10...]后面的数字就是对于的kafka的大版本号 。
初始化FlinkKafkaConsumer 需要如下参数
1、topic名字,用来指定消费一个或者多个topic的数据
2、kafka的配置信息,如zk地址端口,kafka地址端口等
3、反序列化器(schema),对消费数据选择一个反序列化器进行反序列化。
flink kafka的消费端需要知道怎么把kafka中消息数据反序列化成java或者scala中的对象。用户通过使用DeserializationSchema