我几乎完成了avro部分,但是我面前有一个巨大的挑战,那就是名称和名称空间。我尝试过这样做,无论我做了什么,我都经历过错误,甚至在引用像: docs.oracle.com/cd/E26161_02/html/GettingStartedGuide/avroschemas.html这样的文档时也是如此。
我的架构头是:https://i.ibb.co/TPH8shF/image.png
错误为:https://i.ibb.co/BCcX6Jd/image.png
但是,当我将模式添加到命名空间(因为它位于schemas文件夹中)时,会出现以下错误:https://i.ibb.co/Z62RwN2/image.png
你们中有人知道是什么导致了这个错误吗?谢谢!
这是文本版本,如果您需要的话:
src_data_path = 'data/processed/openflights/routes.jsonl.gz'
parsed_schema = load_schema("routes.avsc")
avro_output_path = results_dir.joinpath('results/routes.avro')
src_data_path = 'routes.jsonl'
with open(src_data_path, 'r') as f:
avro_reader = json_reader(f, parsed_schema)
for record in avro_reader:
print(record){
"type": "record",
"name": "routes",
"namespace": "schemas",
"fields": [
{
"name": "airline",
"type": {
"type": "record",
"name": "Airline",
"fields": [
{
"name": "airline_id",
"type": "int",
"default": -1
},
{
"name": "name",
"type": "string",
"default": "NONE"
},
{
"name": "alias",
"type": "string",
"default": "NONE"
},
{
"name": "iata",
"type": "string",
"default": "NONE"
},
{
"name": "icao",
"type": "string",
"default": "NONE"
},
{
"name": "callsign",
"type": "string",
"default": "NONE"
},
{
"name": "country",
"type": "string",
"default": "NONE"
},
{
"name": "active",
"type": "boolean",
"default": false
}
]
},
"default": "NONE"
},
{
"name": "src_airport",
"type": [
{
"type": "record",
"name": "Airport",
"fields": [
{
"name": "airport_id",
"type": "int",
"default": -1
},
{
"name": "name",
"type": "string",
"default": "NONE"
},
{
"name": "city",
"type": "string",
"default": "NONE"
},
{
"name": "iata",
"type": "string",
"default": "NONE"
},
{
"name": "icao",
"type": "string",
"default": "NONE"
},
{
"name": "latitude",
"type": "double"
},
{
"name": "longitude",
"type": "double"
},
{
"name": "timezone",
"type": "double"
},
{
"name": "dst",
"type": "string",
"default": "NONE"
},
{
"name": "tz_id",
"type": "string",
"default": "NONE"
},
{
"name": "type",
"type": "string",
"default": "NONE"
},
{
"name": "source",
"type": "string",
"default": "NONE"
}
]
},
"null"
],
"default": "NONE"
},
{
"name": "dst_airport",
"type": [
"record",
"null"
],
"fields": [
{
"name": "source",
"type": "string",
"default": "NONE"
}
],
"default": "NONE"
},
{
"name": "codeshare",
"type": "boolean",
"default": false
},
{
"name": "stops",
"type": "int",
"default": 0
},
{
"name": "equipment",
"type": {
"type": "array",
"items": "string"
}
}
]
}发布于 2022-01-16 21:08:19
在dst_airport的定义中,您有以下内容:
{
"name": "dst_airport",
"type": [
"record",
"null"
],
"fields": [
{
"name": "source",
"type": "string",
"default": "NONE"
}
],
"default": "NONE"
},type of ["record", "null"]没有意义,因为您还没有定义一个名为"record“的命名类型(我不确定规范甚至允许您这样做。不管怎样,我认为应该是["Airport", "null"]。
而且,这里的fields也没有什么意义。它不能是与fields结合的类型。
https://stackoverflow.com/questions/70726029
复制相似问题