创建含日期数据的AVRO文件时抛出AvroTypeException错误求助
问题背景
- 运行环境:Python 3.7.10、avro-python3 1.10.2
- 异常现象:写入包含日期对象的AVRO文件时抛出
AvroTypeException错误
解决方案
- 手动转换日期类型:AVRO的
date逻辑类型要求输入为1970-01-01至今的天数整数,不能直接传入Python原生datetime.date对象,可通过以下代码转换:from datetime import date date_int = (your_date_object - date(1970, 1, 1)).days - 校验Schema定义:确认你的AVRO Schema中日期字段的定义符合规范,底层类型必须为
int,同时声明逻辑类型:{"name": "date_field", "type": {"type": "int", "logicalType": "date"}} - 替换序列化依赖:
avro-python3对原生日期类型的自动适配支持较差,可换用fastavro库,该库支持直接传入date/datetime对象自动完成序列化,无需手动转换。 - 版本适配调整:avro-python3 1.10.2存在逻辑类型处理的已知bug,如果上述方案无效,可尝试降级到1.9.2版本,或升级到最新稳定版测试。
内容的提问来源于stack exchange,提问作者Nirmal Hariharan
相关产品推荐
相关产品推荐

