在avro模式中,默认值为null,应该为“ null”还是null?

时间:2019-08-16 07:41:18

标签: java scala avro

我是Avro的新手,正在尝试定义架构。想知道我是否尝试将默认值设置为null,它应该是:

a。 “默认”:空

b。 “ default”:“ null”

数据类型到底有关系吗?像int一样,默认值将为“ default”:null,但是当用于字符串时,默认值应为“ default”:“ null”?还是没关系?

1 个答案:

答案 0 :(得分:0)

要将值默认为null,必须指定"default": null。有关每种类型的示例值,请参见规范的Complex Types部分中的表。

  

数据类型到底有关系吗?

,类型很重要。在规范的Primitive Types部分中可以看到,null是它自己的类型。您不得将intstring或任何其他原始类型设置为null

如果要使用“可为空”字段,请使用Unions。例如:

{ "type": ["null", "int"], "default": null }

这表明该数据可能是int,也可能是null。默认为null。为联合指定默认值时,请记住默认值必须与联合中的第一种类型匹配。

来自the specification

  

(请注意,当为类型为联合的记录字段指定默认值时,默认值的类型必须与联合的第一个元素匹配。因此,对于包含“ null”的联合,“ null”通常会首先列出,因为此类联合的默认值通常为null。)