[英]Read a keyed Kafka Record using apache Flink?
我正在使用 value + record kafka 生产者使用:
bin/kafka-console-producer.sh --topic test3 --property "parse.key=true" --property "key.separator=:" --bootstrap-server localhost:9092
但我发现很难理解如何使用 Flink kafka consumer KafkaSource读取这些 kafka 记录。 我希望能够做这样的事情:
record.getValue(), record.getKey(), record.getTimestamp()...
这是我当前的代码,它只从 kafka 读取非键控记录
KafkaSource<String> source = KafkaSource.<String>builder()
.setBootstrapServers(ip)
.setTopics("test3")
.setGroupId("1")
.setStartingOffsets(OffsetsInitializer.earliest())
.setDeserializer(KafkaRecordDeserializationSchema.valueOnly(StringDeserializer.class))
.build();
DataStream<String> stream = env.fromSource(source, WatermarkStrategy.noWatermarks(), "Kafka Source");
stream.map((MapFunction<String, String>) value -> "Receiving from Kafka : " + value).print();
我能举个例子说明我在找什么吗?
您需要实施KafkaRecordDeserializationSchema
(但不是 valueOnly),然后在其反序列化方法中您将有权访问 ConsumerRecord,并且您可以使用其键、值、标头等来生成您想要的任何类型。
Reading Apache Kafka® headers中有一个示例,它是 Immerok Apache Flink Cookbook 的一部分。 请注意,虽然该示例从记录的标头访问主题、分区、偏移量和时间戳,但它不使用键,该键可用作record.key()
。
注意:我为 Immerok 工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.