我正在尝试更新我们的avro架构以添加数据。
当我尝试使用新架构
读取旧数据时遇到问题使用新架构编写的数据没有问题。
当前架构:
{
"type": "record",
"name": "topLevelRecord",
"fields": [
{
"name": "sub_record1",
"type": [
{
"type": "record",
"name": "sub_record1",
"fields": [...]
}
]
},
{
"name": "sub_record2",
"type": [
{
"type": "record",
"name": "sub_record2",
"fields": [...]
}
]
},
{...}
]
}
我的目标是添加新的子记录sub_record3
使用以下架构:
{
"name": "sub_record3",
"type": [
{
"type": "record",
"name": "sub_record3",
"fields": [
{
"name": "field1",
"default": null,
"type": [
"null",
"string"
]
},
{
"name": "field2",
"default": null,
"type": [
"null",
"string"
]
}]
}]
}
我的问题是当我尝试为sub_record3
添加默认值时。
我尝试了以下内容:
default = {}
,
default = {"sub_record3":{}}
,
default = {"sub_record3":{"field1":null, "field2":null}}
,
default = {"sub_record3":{"field1":"", "field2":""}}
,
default = {"field1":null, "field2":null}
但这些都没有奏效。
目前我们使用基于addind null到sub_record3
类型的变通方法并将其用作默认值,但是当通过hive读取数据时,它会显示NULL
。
当数据中不存在sub_record3时,目标是将{"field1":null, "field2":null}
作为sub_record3字段的值返回。