与Kafka的Avro序列化/反序列化

时间:2019-04-29 22:51:10

标签: java serialization apache-kafka deserialization avro

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

1 个答案:

答案 0 :(得分: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


如果不使用架构注册表,则必须编写自己的序列化程序。这是一个通过Bijection库针对生产者使用普通Kafka API以及针对消费者使用Spark的示例

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

请注意,Spark已经具有用于处理Avro的软件包。从理论上讲,您可以直接使用它以数据帧的形式读取Avro文件,并将其写入Kafka主题。

根本不需要火花。 Kafka Consumer或Deserializer界面也可以使用Bijection