Apache kafka 如何使用FlinkKafkaConsumer单独解析密钥<;K、 V>;而不是<;T>;
据我所知,通过Flink的AVRO反序列化,您可以创建AVRO对象流,这很好,但似乎存在一个问题,Flink的kafka消费者只创建单个对象流:Apache kafka 如何使用FlinkKafkaConsumer单独解析密钥<;K、 V>;而不是<;T>;,apache-kafka,apache-flink,avro,flink-streaming,Apache Kafka,Apache Flink,Avro,Flink Streaming,据我所知,通过Flink的AVRO反序列化,您可以创建AVRO对象流,这很好,但似乎存在一个问题,Flink的kafka消费者只创建单个对象流: FlinkKafkaConsumerBase与默认的KafkaAPI及其KafkaConsumer相对 在我的例子中,Key和Value都是独立的AVRO模式兼容对象,合并它们的模式可能是一场噩梦 此外,使用Flink API,我似乎无法检索消费者记录信息?..基于Flink Kafka消费者,有一个构造函数: public FlinkKafkaCon
FlinkKafkaConsumerBase
与默认的KafkaAPI及其KafkaConsumer相对
在我的例子中,Key和Value都是独立的AVRO模式兼容对象,合并它们的模式可能是一场噩梦
此外,使用Flink API,我似乎无法检索消费者记录信息?..基于Flink Kafka消费者,有一个构造函数:
public FlinkKafkaConsumer(String topic, KeyedDeserializationSchema<T> deserializer, Properties props) {
this(Collections.singletonList(topic), deserializer, props);
}
基于Flink Kafka消费者,有一个构造函数:
public FlinkKafkaConsumer(String topic, KeyedDeserializationSchema<T> deserializer, Properties props) {
this(Collections.singletonList(topic), deserializer, props);
}
是否有任何方法可以使用此信息(分区、偏移量、时间戳)保留kafka元数据?据我所知,它创建了元组(K,V),由FlinkKafkaConsumerBase之类的API生成,但仍然丢弃了元数据。无论如何,感谢您的初始答案:)是的,您可以:)
TypeInformationKeyValueSerializationSchema
只是实现从Kafka获取键和值的一个示例。我更新了答案以包含检索额外信息的示例。是否有任何方法可以使用此信息(分区、偏移量、时间戳)保留kafka元数据?据我所知,它创建了元组(K,V),由FlinkKafkaConsumerBase之类的API生成,但仍然丢弃了元数据。无论如何,感谢您的初始答案:)是的,您可以:)TypeInformationKeyValueSerializationSchema
只是实现从Kafka获取键和值的一个示例。我更新了答案以包含检索额外信息的示例。这只是一个与这个问题松散相关的额外信息,对于任何试图自己做这件事的人来说:Flink的AVRO序列化API不符合kafka AVRO序列化,因为后者将magic byte=0和schema version int(byte[5])包含在byte[]中内容作为前缀。Flinks的默认AvroSerializer与之不兼容,因为它试图直接解析从kafka接收的消息,同时将元数据传递给反序列化程序,通常会导致OutOfBoundException或空对象T实例(如果幸运的话),这只是一个额外的信息,对于任何试图自己解决这个问题的人来说,这只是一个松散相关的信息:Flink的AVRO序列化API不符合kafka AVRO序列化,因为后者包括magic byte=0和schema version int(byte[5])以字节[]内容作为前缀。Flinks的默认AvroSerializer与它不兼容,因为它试图直接解析从kafka收到的消息,同时将元数据传递给反序列化程序,如果“幸运”的话,通常会导致OutOfBoundException或空对象T实例