如何在 avro 模式中定义 byte[] 和 LocalDateTime?

How to define byte[] and LocalDateTime in avro schema?

我是 Avro 架构的新手。我尝试使用 kafka publish/consumer 我的 java 对象。 我有 java bean 类,它包含带有 LocalDateTime 和 byte[] 的字段。我如何在 avro 模式原始类型中定义两者?我可以用于 LocalDateTime 的最佳原始类型是什么?

private LocalDateTime timestamp; 
private byte[] content; 

我这样定义的;但得到

 {
            "name": "content", "type": "bytes"
         },

Class 转换异常[1]

[1] Caused by: java.lang.ClassCastException: [B cannot be cast to java.nio.ByteBuffer at org.apache.avro.generic.GenericDatumWriter.writeBytes(GenericDatumWriter.java:219) at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:77) at org.apache.avro.generic.GenericDatumWriter.writeField(GenericDatumWriter.java:114) at org.apache.avro.generic.GenericDatumWriter.writeRecord(GenericDatumWriter.java:104) at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:66) at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:58)

对于 byte[] 你可以像 miguno 说的那样使用 bytes 原语。对于 LocalDateTime 对象,您可以通过将其转换为毫秒来将其存储为长原语。 Avro 还支持逻辑类型,您可以使用它直接反序列化为不属于原始类型的内容。请参阅 here 了解更多详细信息和与您想要实现的目标类似的示例。