数组联合的 Avro 架构问题

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

我在 Kafka 主题上注册的 AVRO 架构中使用以下定义

{
  "doc": "list of employees",
  "name": "employees",
  "type": [
    "null",
    {
      "type": "array",
      "items": {
        "avro.java.string": "String",
        "type": "string"
      }
    }
  ],
  "default": null
}

预期输出:

"employees" : ["Ajay", "Vijay"]
null

但低于一:

 "employees": {
      "array": [
        "Ajay", "Vijay"
      ]
    }

我检查了下面的架构,它工作正常。如果我添加默认 null ,那么它会创建额外的数组字段

{
  "doc": "list of employees",
  "name": "employees",
  "type":
    {
      "type": "array",
      "items": {
        "avro.java.string": "String",
        "type": "string"
      }
    }
  
}
avro
1个回答
0
投票

您指定字段

employees
(作为联合类型)的方式是让 Avro 在您的字段周围添加额外的包装器,并使其保持您所看到的方式。

您可以做的就是直接将字段初始化为空数组(

[]
),而不是将默认数组声明为 null。这样,您将获得与当前行为类似的行为,而无需额外的嵌套。

这就是您的架构应该的样子:

{
  "doc": "list of employees",
  "name": "employees",
  "type": {
    "type": "array",
    "items": "string"
  },
  "default": []
}
© www.soinside.com 2019 - 2024. All rights reserved.