1、简介
Flink消费Kafka的数据(这里默认kafka版本是0.9.x),非常简单,只需要提供以下几项即可:
1、maven依赖
2、指定topic name(s)
3、指定DeserializationSchema
4、指定kafka的properties
其中,properties在kafka 0.9.x中,只需要配置两个选项即可,例如:
val kafkaProps = new Properties()
kafkaProps.setProperty("bootstrap.servers", "localhost:9092")
kafkaProps.setProperty("group.id", "flink consumer")
因此,Flink提供了一个high level的API来消费kafka的topic中的数据:
2、FlinkKafkaConsumer09解读
此类位于org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer09,提供了4个API来接受不同的参数输入:
其中,前3个API最终都被转换为第4个API,代码如下:
public FlinkKafkaConsumer09(String topic, DeserializationSchema<T> valueDeserializer, Properties props) {
this(Collections.singletonList(topic), valueDeserializer, props);
}
public FlinkKafkaConsumer09(String topic, KeyedDeserializationSchema<T> deserializer, Properties props) {
this(Collections.singletonList(topic), deserializer, props);
}
public FlinkKafkaConsumer09(List<String> topics, DeserializationSchema<T> deserializer, Properties props) {
this