Avro 架构是使用 JSON 定义的。模式由基本类型(null、boolean、int、long、float、double、bytes 和 string)和复杂类型(record、enum、array、map、union 和fixed)组成。我想问一下 BigDecimal 适合哪个。
Avro 在 1.7.7 中引入了逻辑类型(我相信),这应该可以帮助您序列化十进制。
这是代码:
"type": [ {
"type": "string",
"java-class": "java.math.BigDecimal"
} ]
要在 Avro 中序列化 Java BigDecimal,您可以定义使用“十进制”逻辑类型的 Avro 模式。 “decimal”逻辑类型允许您指定 BigDecimal 的精度和小数位数。以下是小数点后 2 位 BigDecimal 的示例模式定义:
{
"name": "amount",
"type": {
"type": "bytes",
"logicalType": "decimal",
"precision": 10, // Adjust precision as needed
"scale": 2 // Adjust scale as needed
}
}