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

kod*_*hKT 6 java scala avro

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

A。“默认”:空

b. “默认”:“空”

数据类型是什么重要吗?就像 int 一样,默认值将是“default”:null,但是当它是字符串时,默认值应该是“default”:“null”?或者没关系?

bla*_*iet 9

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

数据类型是什么重要吗?

是的,类型很重要。正如您在规范的“基本类型”部分中看到的,null是它自己的类型。您不能将intstring或任何其他基本类型设置为null

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

{ "type": ["null", "int"], "default": null }
Run Code Online (Sandbox Code Playgroud)

这表明该数据可以是 aint也可以是 a null。它默认为null. 指定联合的默认值时,请记住默认值必须与联合中的第一个类型匹配。

规格来看

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