Avro架构演变:扩展现有阵列

时间:2017-01-03 16:00:30

标签: hadoop avro

标准Avro架构演变示例显示向记录添加具有默认值的新字段。但是,如果您的旧模式有一个数组并且您想要向该数组添加一个新字段呢?

例如,给定一组记录:

{
  "type": "array",
  "items": {
    "name": "Loss",
    "type": "record",
    "fields": [
      {
        "name": "lossTotalAmount",
        "type": [ "null", "string" ],
        "default": null
      },
      {
        "name": "lossType",
        "type": [ "null", "string" ],
        "default": null
      },
      {
        "name": "lossId",
        "type": [ "null", "string" ],
        "default": null
      },
      {
        "name": "vehicleLossCode",
        "type": [ "null", "string" ],
        "default": null
      }
    ]
  }
}

添加新字段claimNumber

{
  "type": "array",
  "items": {
    "name": "Loss",
    "type": "record",
    "fields": [
      {
        "name": "lossTotalAmount",
        "type": [ "null", "string" ],
        "default": null
      },
      {
        "name": "lossType",
        "type": [ "null", "string" ],
        "default": null
      },
      {
        "name": "lossId",
        "type": [ "null", "string" ],
        "default": null
      },
      {
        "name": "vehicleLossCode",
        "type": [ "null", "string" ],
        "default": null
      },
      {
        "name": "claimNumber",
        "type": [ "null", "string" ],
        "default": null
      }
    ]
  }
}

使用常规技术似乎不起作用,因为我开始遇到反序列化异常。是否有不同的方法来扩展Avro中的现有阵列,还是不可能?

0 个答案:

没有答案