gpt4 book ai didi

java - 如何让 Avro SchemaBuilder 构建两个 'records' 之间的映射架构?

转载 作者:行者123 更新时间:2023-12-01 16:37:18 25 4
gpt4 key购买 nike

尝试序列化表示为映射的 Java 对象。这需要我先构建一个 Avro Schema。我正在使用 Avro SchemaBuilder用于模式生成。已成功生成 Map 对象的模式。但是无法处理整个 map 的架构构建。最终架构应如下所示(手动创建):

{
"type": "record",
"name": "MapObject",
"namespace": "test",
"fields": [
{
"name": "CacheMap",
"type": {
"type": "map",
"values": [
{
"type": "record",
"name": "User",
"namespace": "test",
"fields": [
{
"name": "id",
"type": "long"
},
{
"name": "status",
"type": "string"
}
]
},
{
"type": "record",
"name": "UserKey",
"namespace": "test",
"fields": [
{
"name": "key",
"type": "long"
},
{
"name": "keyPrint",
"type": "string"
}
]
}
]
}
}
]
}

如何在 SchemaBuilder 中传递映射键和值的不同记录?SchemaBuilder.map().values() 不允许传递多个 Schema 作为 .value() 的参数。

最佳答案

Apache 阿夫罗Unions可以在这里提供帮助。

SchemaBuilder.builder()
.map()
.values(SchemaBuilder.unionOf().type(firstSchema).and().type(secondSchema).endUnion());

其中 firstSchemasecondSchema 是已为所需 User 和 UserKey“记录”定义的单独架构(考虑问题中的架构)

关于java - 如何让 Avro SchemaBuilder 构建两个 'records' 之间的映射架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61930722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com