如何在 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 了解更多详细信息和与您想要实现的目标类似的示例。
我是 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 了解更多详细信息和与您想要实现的目标类似的示例。