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

lvmkulzt  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(439)

我是新来的avro模式。我尝试使用kafka发布/消费我的java对象。我有javabean类,它包含localdatetime和byte[]字段。如何在avro模式基元类型中定义这两种类型?我可以为localdatetime使用的最佳基元类型是什么?

private LocalDateTime timestamp; 
private byte[] content;

我定义了这样的东西;但是得到

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

类强制转换异常[1]
[1] 原因:java.lang.classcastexception:[b不能转换为org.apache.avro.generic.genericdatumwriter.writebytes(genericdatumwriter)上的java.nio.bytebuffer。java:219)在org.apache.avro.generic.genericdatumwriter.write(genericdatumwriter。java:77)在org.apache.avro.generic.genericdatumwriter.writefield(genericdatumwriter。java:114)在org.apache.avro.generic.genericdatumwriter.writerecord(genericdatumwriter。java:104)在org.apache.avro.generic.genericdatumwriter.write(genericdatumwriter。java:66)在org.apache.avro.generic.genericdatumwriter.write(genericdatumwriter。java:58)

5fjcxozz

5fjcxozz1#

对于byte[],可以使用bytes原语,如miguno所说。对于localdatetime对象,可以将其转换为毫秒,将其存储为长原语。avro还支持逻辑类型,您可以使用这些逻辑类型直接反序列化为不属于基元类型的内容。请参阅此处了解更多详细信息和与您想要实现的目标类似的示例。

相关问题