我正在使用Avro 1.11.0库使用Python 3.7将数据写入 Avro 文件。我对 Avro 的联合类型有一些疑问。请在下面找到两个架构。
{
"name" : "name",
"type" : ["null", "string"],
"columnName" : "name",
}
{
"name" : "name",
"type" : ["string", "null"],
"columnName" : "name",
}
Run Code Online (Sandbox Code Playgroud)
第一个架构包含联合类型 as "type" : ["null", "string"],第二个架构包含联合类型 as "type" : ["string", "null"]。那么上面提到的模式有什么区别吗?
小智 5
唯一的区别是,规范规定,如果要使用默认值,它应该对应于联合中的第一个类型。
例如,这些是有效的:
{
"name" : "name",
"type" : ["null", "string"],
"columnName" : "name",
"default": null,
}
{
"name" : "name",
"type" : ["string", "null"],
"columnName" : "name",
"default": "foo",
}
Run Code Online (Sandbox Code Playgroud)
但这些不会:
{
"name" : "name",
"type" : ["null", "string"],
"columnName" : "name",
"default": "foo",
}
{
"name" : "name",
"type" : ["string", "null"],
"columnName" : "name",
"default": null,
}
Run Code Online (Sandbox Code Playgroud)
由于包含 null 的联合往往意味着类似于可选字段的内容,因此大多数人会将 null 作为联合中的第一个选项,以便他们可以将默认值设置为 null。
| 归档时间: |
|
| 查看次数: |
4381 次 |
| 最近记录: |