AVRO模式演变,记录类型的默认值

时间:2017-04-12 10:02:54

标签: avro

我正在尝试更新我们的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字段的值返回。

0 个答案:

没有答案