java.math.BigDecimal to Avro .avdl file



我在为 java.math.BigDecimal 类型编写 Avro 模式时遇到问题,我尝试了以下方法:

  1. 基于 Avro 官方文档,我知道我需要自己定义逻辑类型以支持 BigDecimal,但该链接仅在 avsc 中提供了示例,我正在尝试在 avdl 中弄清楚。
  2. 基于 Avro 文档和此示例,我在 avdl 下面写道:

'

@namespace("test")
protocol My_Protocol_v1 {
  record BigDecimal {
        @java-class("java.math.BigDecimal") string value;
  }

'

但它不起作用:这个 IDL 模式编译得很好,可以生成一个名为 BigDecimal 的 Java 类,但我不能真正使用生成的 BigDecimal 作为 java.math.BigDecimal,这是怎么回事?或者我应该怎么做?

多谢

好的,所以我通过电子邮件发送了Apache Avro开发电子邮件列表,并得到了Doug Cuting的回复(非常感谢Doug)。

我相信这已经实施但尚未发布。

它在以下情况下实施: https://issues.apache.org/jira/browse/AVRO-1847

这计划包含在 1.8.2 版本中,该版本应该很快就会发布。

只是为了阐明它在较新版本中的工作方式:
我们刚刚开始使用 rc4 of 1.8.2,您可以使用以下语法创建 BigDecimal 字段:

record Thing {
    decimal(10,2) foo;
}

Thing类将具有精度为 10、小数位数为 2 的BigDecimal属性foo

decimal(10,2) 不会在 avsc 架构中生成十进制数据类型,即使编译器版本已更改为 1.8.2 版本。

最新更新