Avro-处理具有多个模式的复杂类型数组

时间:2020-02-07 19:35:31

标签: avro

我正在创建一个Avro Schema来表示我的对象,并且我想知道处理包含多个结构的数组的正确方法是什么。例如,我的对象看起来像这样的JSON:

{
      "id": 665534346251,      
      "events": [
        {
          "id": 665534346314,
          "type": "Comment",
          "author_id": 377633942574,
          "body": "x.",
          "html_body": "x",
          "plain_body": "x.",
          "public": true,
          "attachments": [],
          "audit_id": 665534346251
        },
        {
          "id": 665534346394,
          "type": "Create",
          "value": "a",
          "field_name": "subject"
        },
        {
          "id": 665534346454,
          "type": "Create",
          "value": [
            "xn",
            "x",
            "a"
          ],
          "field_name": "tags"
        }]}

是否可以表示“事件”,然后avro选择适合每个对象的模式?

1 个答案:

答案 0 :(得分:0)

如果包含字段,则可以创建一个对象,但是通过联合定义可以使某些对象成为可选对象。

以发布的示例为例,请参见底部的两个字段

      "id": 665534346314,
      "type": "Comment",
      "author_id": 377633942574,
      "body": "x.",
      "html_body": "x",
      "plain_body": "x.",
      "public": true,
      "attachments": [],
      "audit_id": 665534346251
      "field_name": union<null, string> 
      "value": union<null, array>

使字符串值成为单个值列表。