Java 将Avro GenericData.Record转换为字节数组失败

Java 将Avro GenericData.Record转换为字节数组失败,java,apache-kafka,avro,Java,Apache Kafka,Avro,我从Java中的POJO类创建了GenericData.Record, 并尝试将此对象序列化为字节数组并发送给kafka topic, 使用附加的代码。 但我得到了以下例外: 无法将UserMetaData强制转换为org.apache.avro.generic.IndexedRecord 怎么了 谢谢 @Override public byte[] serialize(String topic, T data) { try { byte[] result = n

我从Java中的POJO类创建了GenericData.Record, 并尝试将此对象序列化为字节数组并发送给kafka topic, 使用附加的代码。 但我得到了以下例外: 无法将UserMetaData强制转换为org.apache.avro.generic.IndexedRecord

怎么了

谢谢

@Override
public byte[] serialize(String topic, T data) {
        try {
        byte[] result = null;

        if (data != null) {
        LOGGER.debug("data='{}'", data);

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        BinaryEncoder binaryEncoder =
        EncoderFactory.get().binaryEncoder(byteArrayOutputStream, null);

        DatumWriter<GenericRecord> datumWriter = new GenericDatumWriter<>(data.getSchema());
        datumWriter.write(data, binaryEncoder);

        binaryEncoder.flush();
        byteArrayOutputStream.close();

        result = byteArrayOutputStream.toByteArray();
        LOGGER.debug("serialized data='{}'", DatatypeConverter.printHexBinary(result));
        }
        return result;
        } catch (IOException ex) {
        throw new SerializationException(
        "Can't serialize data='" + data + "' for topic='" + topic + "'", ex);
        }
        }
@覆盖
公共字节[]序列化(字符串主题,T数据){
试一试{
字节[]结果=空;
如果(数据!=null){
debug(“data='{}',data);
ByteArrayOutputStream ByteArrayOutputStream=新建ByteArrayOutputStream();
二进制编码器二进制编码器=
EncoderFactory.get().binaryEncoder(byteArrayOutputStream,null);
DatumWriter DatumWriter=新的GenericDatumWriter(data.getSchema());
写入(数据,二进制编码器);
binaryEncoder.flush();
byteArrayOutputStream.close();
结果=byteArrayOutputStream.toByteArray();
debug(“序列化数据='{}',DatatypeConverter.printHexBinary(结果));
}
返回结果;
}捕获(IOEX异常){
抛出新的序列化异常(
对于主题='“+topic+”,ex),无法序列化数据='“+data+”;
}
}

为什么不使用现有的合流Avro序列化程序?我认为你应该展示你的UserMetadata类,实际上我没有GenericData.Record的模式。(avdl/avsc),我通过反射生成它。因此,我不确定我是否可以使用Confluent Avro Serializer最新版本