【发布时间】:2020-06-05 23:09:52
【问题描述】:
完整的架构如下:
{
"type": "record",
"name": "envelope",
"fields": [
{
"name": "before",
"type": [
"null",
{
"type": "record",
"name": "row",
"fields": [
{
"name": "username",
"type": "string"
},
{
"name": "timestamp",
"type": "long"
}
]
}
]
},
{
"name": "after",
"type": [
"null",
"row"
]
}
]
}
我想以编程方式提取以下子模式:
{
"type": "record",
"name": "row",
"fields": [
{
"name": "username",
"type": "string"
},
{
"name": "timestamp",
"type": "long"
}
]
}
如您所见,“之前”字段可以为空。我可以通过这样做来提取它的架构:
schema.getField("before").schema()
但模式不是记录,因为它在开头包含 NULL(UNION 类型),我不能进去获取“行”的模式。
["null",{"type":"record","name":"row","fields":[{"name":"username","type":"string"},{"name":"tweet","type":"string"},{"name":"timestamp","type":"long"}]}]
我想获取子模式,因为我想从中创建 GenericRecord。基本上我想创建两个“之前”和“之后”的 GenericRecord,并将它们添加到从完整模式创建的主 GenericRecord 中。
我们将不胜感激。
【问题讨论】:
标签: avro