Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 如何使用FlinkKafkaConsumer单独解析密钥<;K、 V>;而不是<;T>;_Apache Kafka_Apache Flink_Avro_Flink Streaming - Fatal编程技术网

Apache kafka 如何使用FlinkKafkaConsumer单独解析密钥<;K、 V>;而不是<;T>;

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

据我所知,通过Flink的AVRO反序列化,您可以创建AVRO对象流,这很好,但似乎存在一个问题,Flink的kafka消费者只创建单个对象流:
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实例