【问题标题】:Defaults for nested records in an Avro schemaAvro 模式中嵌套记录的默认值
【发布时间】:2018-10-11 00:00:24
【问题描述】:

这个问题/答案 (How to nest records in an Avro schema?) 阐明了如何嵌套复杂类型(在这种情况下为记录)。但是,我想知道是否有人知道如何为记录类型设置默认值。在上面问题中显示的示例中,我收到错误,地址丢失,我希望 avro 将其默认为空字典或至少为空字符串 - 而不是我必须将其默认为前进。

【问题讨论】:

    标签: avro


    【解决方案1】:

    您只能将空值作为 AVRO 中嵌套对象的默认值。这就是默认 null 值的架构的样子

    {
        "name": "person",
        "type": "record",
        "fields": [
            {"name": "firstname", "type": "string"},
            {"name": "lastname", "type": "string"},
            {
                "name": "address",
                "type": ["null" , {
                            "type" : "record",
                            "name" : "AddressUSRecord",
                            "fields" : [
                                {"name": "streetaddress", "type": "string"},
                                {"name": "city", "type": "string"}
                            ]
                        }],
                "default": null
            }
        ]
    }
    

    【讨论】:

    • 谢谢!因此,在您发布的示例中,如果缺少“地址”,序列化不会失败。如果存在“streetaddress”但缺少“city”,它会失败吗?
    • 是的,它会失败,如果你想让它像这样工作,你需要为 null 和默认值添加联合。归根结底,您的架构应该指定哪些可能会丢失,哪些不能。
    • 非常感谢@hlagos!按预期工作!
    猜你喜欢
    • 2012-07-30
    • 2018-02-20
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多