首页 > 解决方案 > Avro Schema 用于具有随机名称的非结构化数据

问题描述

我需要在 Avro 模式中保存名称不可预测的嵌套数据对象。例如:

 {
    "foo": "bar",
    "baz": {
        "randomName1": 0.23,
        ...
    }
}

因为只能使用 records 创建递归映射,但 records 必须有一个字段名称,我想我需要将对象转换为其他东西。

我认为这三个选项之一:

(1) 嵌套键/值对数组

例子:

[
    {
        key: "foo",
        value: "bar"
    },
    {
        key: "baz",
        value: [
            {
                name: "randomName1",
                value; 0.23
            },
            ...
        ]
    },
]

(2) 带有点语法键/值对的平面图

例子:

{
    "foo": "bar",
    "baz.randomName1": 0.23,
    ...
}

(3) 扁平化键/值对象数组

例子:

[
    {
        "name": "foo",
        "value": "bar"
    },
    {
        "name": "baz.randomName1",
        "value": 0.23
    },
    ...
]

这三种方法都可以很好地转换为 Avro,但我不确定这两种方法的含义,例如在尝试通过 KSQL 查询这些值时。

任何关于未来潜在陷阱的暗示都受到高度赞赏。

标签: serializationapache-kafkaschemaavro

解决方案


推荐阅读