【问题标题】:java.math.BigDecimal to Avro .avdl filejava.math.BigDecimal 到 Avro .avdl 文件
【发布时间】:2017-06-17 13:57:18
【问题描述】:

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

  1. 根据 Avro 官方 doc,我知道我需要自己定义逻辑类型以支持 BigDecimal,但该链接仅在 avsc 中提供示例,我正在尝试在 avdl 中解决。
  2. 基于Avro doc和这个example,我在avdl下面写了:

`

@namespace("test")
protocol My_Protocol_v1 {

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

`

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

非常感谢

【问题讨论】:

    标签: java avro bigdecimal avro-tools


    【解决方案1】:

    好的,所以我向 Apache Avro 开发人员电子邮件列表发送了电子邮件,并收到了 Doug Cutting 的回复(非常感谢 Doug)。

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

    实现于:https://issues.apache.org/jira/browse/AVRO-1847

    这将包含在 1.8.2 版本中,很快就会发布。

    【讨论】:

      【解决方案2】:

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

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

      Thing 类将有一个 BigDecimal 属性 foo,精度为 10,小数位数为 2。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-01
          • 2016-11-07
          • 1970-01-01
          • 2019-06-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多