【发布时间】:2021-09-20 15:36:42
【问题描述】:
Avro 架构schema.avsc:
{
"namespace": "standard",
"type": "record",
"name": "agent",
"aliases":["agents"],
"fields": [
{
"name": "id",
"type": ["string", "null"]
},
{
"name": "name",
"type": ["string", "null"],
"aliases":["title", "nickname"]
}
]
}
Python 脚本main.py:
from fastavro import writer, reader
from fastavro.schema import load_schema
schema = load_schema('schema.avsc')
avro_data = 'agent.avro'
data = jsonlines.open('data.jsonl')
with open(avro_data, 'wb') as fout:
writer(fout, schema, data, validator=True)
with open(avro_data, 'rb') as fin:
for i in reader(fin, schema):
print(i)
当我的 json 行 data.jsonl 文件看起来像这样时:
{"id":"1","name":"foo"}
{"id":"2","name":"bar"}
我的 python 脚本返回:
{'id': '1', 'name': 'foo'}
{'id': '2', 'name': 'bar'}
但是,如果我的 json 行 data.jsonl 文件看起来像这样:
{"id":"1","title":"foo"}
{"id":"2","title":"bar"}
我的 python 脚本返回:
{'id': '1', 'name': None}
{'id': '2', 'name': None}
知道为什么 name 列不尊重我在 avro 架构文件中为该特定字段定义的 aliases 属性吗?
【问题讨论】: