处理不同目录中的多个AVRO(avsc文件),并使用python(fastavro)相互引用

2024-09-27 22:37:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我在不同的目录中有两个avsc文件-

1.  com.company.model.AddressRecord.avsc
2.  com.company.model.Customer.avsc

这是地址文件

{
    "type": "record",
    "namespace": "com.company.model",
    "name": "AddressRecord",
    "fields": [
        {
            "name": "streetaddress",
            "type": "string"
        },
        {
            "name": "city",
            "type": "string"
        },
        {
            "name": "state",
            "type": "string"
        },
        {
            "name": "zip",
            "type": "string"
        }
    ]
}

这是一个客户文件,它是一个父(顶级)模式

{
    "namespace": "com.company.model",
    "type": "record",
    "name": "Customer",
    "fields": [
        {
            "name": "firstname",
            "type": "string"
        },
        {
            "name": "lastname",
            "type": "string"
        },
        {
            "name": "email",
            "type": "string"
        },
        {
            "name": "phone",
            "type": "string"
        },
        {
            "name": "address",
            "type": {
                "type": "array",
                "items": "com.company.model.AddressRecord"
            }
        }
    ]
}

当两个文件位于同一目录中时,我可以使用fastavro加载这些文件

fastavro.schema.load_schema('com.company.model.Customer.avsc')

但是,当两个avsc文件位于不同的目录中时,它不起作用。如果两个avsc文件位于不同的目录中,我需要对文件进行哪些更改,以便fast avro可以加载模式


Tags: 文件name目录comfieldsstringmodeltype

热门问题