【发布时间】:2016-08-05 11:46:18
【问题描述】:
我是 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 在 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)
【问题讨论】:
-
byte[]的 Avro 的“字节”原语怎么样? avro.apache.org/docs/current/spec.html#schema_primitive -
可以使用 Avro 字节存储 byte[] 而不丢失信息吗?我尝试了 base64 编码并使用了有效的 avro 字符串数据类型,想知道它是否可以在没有编码的情况下工作。我正在尝试将 png 图像存储在 avro 的一个字段中。如果有一个例子说明如何做,那就太好了。
-
知道了。已使用 ByteBuffer 将 byte[] 存储在 avro 中。 ByteBuffer.wrap 将帮助您完成从 byte[] 到 ByteBuffer 的转换。虽然不确定编码部分。
标签: java apache-kafka avro