我是Avro架构的新手。我尝试使用kafka发布/使用我的java对象。 我有java bean类,其中包含LocalDateTime和byte []的字段。我如何在avro架构原始类型中定义它们?我可以用于LocalDateTime的最佳基元类型是什么?
private LocalDateTime timestamp;
private byte[] content;
我定义了这样的东西;但得到
{
"name": "content", "type": "bytes"
},
类投射异常[1]
[1]引起:java.lang.ClassCastException:[B无法强制转换为 java.nio.ByteBuffer at org.apache.avro.generic.GenericDatumWriter.writeBytes(GenericDatumWriter.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)
答案 0 :(得分:1)
对于byte [],您可以使用bytes原语作为miguno说。对于LocalDateTime对象,您可以将其存储为长基元,方法是将其转换为毫秒。 Avro还支持逻辑类型,您可以使用它直接反序列化为不属于基本类型的内容。有关详细信息,请参阅here以及与您希望实现的类似的示例。