【发布时间】:2021-08-23 18:20:28
【问题描述】:
我有一个主要的 avro 架构和其他小型 avro 架构。主要的 avro 架构指的是其他小的 avro 架构,如下所示:
项目.avsc
{
"namespace":"com.example.common",
"name":"Item",
"type":"record",
"fields":[
{
"name":"ItemId",
"type":"com.example.common.ItemId"
},
{
"name":"features",
"type":"com.example.common.Features"
}
]
}
ItemId.avsc
{
"namespace":"com.example.common",
"name":"ItemId",
"type":"record",
"fields":[
{
"name":"id",
"type":"int"
}
]
}
Features.avsc
{
"namespace":"com.example.common",
"name":"Features",
"type":"record",
"fields":[
{
"name":"Range",
"type":{
"type":"array",
"items":"com.example.common.Range"
}
}
]
}
还有一个 Range.avsc 但我没写,问题太长了。
所有这些文件都在一个名为“com.example.common”的文件夹中
我写了一行简单的python代码来解析和打印Item.avsc的架构:
import avro.schema
schema = avro.schema.parse(open("./com.example.common/Item.avsc", "rb").read())
print(schema)
但它引发了:
avro.schema.SchemaParseException: Could not make an Avro Schema object from com.example.common.ItemId.
avro.schema.SchemaParseException: Type property "com.example.common.ItemId" not a valid Avro schema: Could not make an Avro Schema object from com.example.common.ItemId.
我们如何读取架构中的引用架构?
【问题讨论】: