AVRO需要为每个字段设置一个值

问题描述 投票:0回答:1

我有一个AVRO模式,其中包含一堆元素。在每个元素中,我都提供一个默认值。但是,当我尝试序列化时,如果我尝试不设置任何带有值的元素,则会出现异常。即使我只为元素提供一个空字符串,也不会得到这些序列化异常。

avro
1个回答
0
投票

avro模式中的“默认”字段用于模式演变案例。有关规则,请参见http://avro.apache.org/docs/current/spec.html#Schema+Resolution

序列化(写入)数据时不使用默认值。在对(缺少)字段模式生成的avro数据进行脱盐(读取)时使用它。

例如如果我们有使用此模式生成的数据:

{
    "type":"record",
    "name":"Product",
    "fields":[
         {"name":"product_id","type": "long"}
    ]
 } 

而且我们想使用扩展模式来读取(解决)它,该模式也包含如下product_name字段:

{
    "type":"record",
    "name":"Product",
    "fields":[
        {"name":"product_id","type": "long"},
        {"name":"product_name","type": "string","default":"old product data"},
    ]
} 

默认值将用于为数据中缺少的字段'product_name'设置值,因为该数据是使用第一个架构写入的。

© www.soinside.com 2019 - 2024. All rights reserved.