Avro 与 Java BigDecimal 类型

All*_*afe 5 java avro

我尝试使用以下类型创建Avro架构BigDecimal

SchemaBuilder.FieldAssembler<Schema> schemaFieldAssembler = SchemaBuilder.record("AvroEventRequest2")
                .namespace("com.test")
                .fields();
for (Map.Entry<String, Object> entry : inputData.entrySet()) {
    if (entry.getValue() instanceof String) {
            //some operations
    } else if (entry.getValue() instanceof BigDecimal) {
        Schema decimalSchema = LogicalTypes.decimal(4)
                        .addToSchema(Schema.create(Schema.Type.BYTES));
        schemaFieldAssembler = schemaFieldAssembler.name(entry.getKey())
                        .type(decimalSchema).noDefault();
   }
}
Run Code Online (Sandbox Code Playgroud)

我读了这个文档: https: //avro.apache.org/docs/1.8.1/spec.html#Decimal,但它对我不起作用。我得到异常:

Caused by: org.apache.kafka.common.errors.SerializationException: Error serializing Avro message
Caused by: java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.nio.ByteBuffer
    at org.apache.avro.generic.GenericDatumWriter.writeBytes(GenericDatumWriter.java:260) ~[avro-1.8.1.jar:1.8.1]
    at org.apache.avro.generic.GenericDatumWriter.writeWithoutConversion(GenericDatumWriter.java:116) ~[avro-1.8.1.jar:1.8.1]
    at org.apache.avro.generic.GenericDatumWriter.write(GenericDatumWriter.java:70) ~[avro-1.8.1.jar:1.8.1]
Run Code Online (Sandbox Code Playgroud)

如何序列化 BigDecimal 类型?