Avro序列化/反序列化到Kafka主题[关闭]

问题描述 投票:-2回答:1

我正在尝试创建一个通用实用程序,它将从Kafka主题中读取avro文件,并将avro文件写入Java中的主题。我找不到相同的文档。感谢任何工作代码。

java serialization apache-kafka deserialization avro
1个回答
1
投票

也许你看到了这个问题? Read Existing Avro File and Send to Kafka


你通常在Kafka中没有“文件”...围绕Avro有很多关于如何读/写文件的文档,但是Kafka只处理单个记录作为byte[]对象。 Avro提供BinaryEncoder类来获取字节数组的记录

如果您使用Kafka和Avro,您通常会使用Confluent Schema Registry。这使得每个Kafka消息不需要完全编码的Avro架构,而只需要具有二进制数据的数字引用id

你可以在这里找到他们的快速入门

https://docs.confluent.io/current/quickstart/index.html

和Github的例子在这里回购

https://github.com/confluentinc/examples/blob/5.2.1-post/clients/avro/README.md


如果您没有使用Schema Registry,则必须编写自己的序列化程序。这是一个使用普通Kafka API为Producer和Spark通过Bijection库为消费者提供的示例

http://aseigneurin.github.io/2016/03/04/kafka-spark-avro-producing-and-consuming-avro-messages.html

请注意,Spark已经有一个用于处理Avro的软件包。从理论上讲,您可以直接使用它将Avro文件作为Dataframe读取,并将它们写入Kafka主题。

根本不需要Spark。 Kafka Consumer或Deserializer接口也可以使用Bijection

© www.soinside.com 2019 - 2024. All rights reserved.