【发布时间】:2020-02-26 18:08:14
【问题描述】:
我正在尝试为字段设置默认值(使用 Java),但遇到了一个令人讨厌的异常:
线程“main”org.apache.avro.AvroTypeException 中的异常:字段优先的默认值无效:“Andy”不是 ["null","string"]
在 org.apache.avro.Schema.validateDefault(Schema.java:1542)
Apache Avro: Unions 的文档说:
如上所述,联合使用 JSON 数组表示。为了 例如,["null", "string"] 声明一个模式,它可以是 null 或字符串。
(请注意,当为记录字段指定默认值时,其 type 是一个 union,默认值的类型必须匹配第一个 工会的元素。因此,对于包含“null”的联合,“null” 通常首先列出,因为此类联合的默认值为 通常为空。)
谁能告诉我为什么默认值的类型必须匹配联合的第一个元素?
【问题讨论】: