我是新来的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)
1条答案
按热度按时间5fjcxozz1#
对于byte[],可以使用bytes原语,如miguno所说。对于localdatetime对象,可以将其转换为毫秒,将其存储为长原语。avro还支持逻辑类型,您可以使用这些逻辑类型直接反序列化为不属于基元类型的内容。请参阅此处了解更多详细信息和与您想要实现的目标类似的示例。