Avro 导出 - 基准日期时间不是模式的示例
Avro export - The datum datetime is not an example of the schema
我正在尝试使用 avro-python3 库将我的数据导出到 python3 中的 avro 文件。我对日期时间类型有疑问。
这是我的代码:
import json
from datetime import datetime
import avro
from avro.datafile import DataFileWriter
from avro.io import DatumWriter
schema = {
'name': 'test',
'type': 'record',
'fields': [{'name': 'updated_at', 'type': {"type": "long", "logicalType": "timestamp-millis"}}]
}
schema_parsed = avro.schema.parse(json.dumps(schema))
with open('test.avro', 'wb') as f:
writer = DataFileWriter(f, DatumWriter(), schema_parsed)
writer.append({'updated_at': datetime(2022, 3, 25, 2, 39, 20, 736)})
writer.close()
我收到以下错误:
avro.io.AvroTypeException: The datum {'updated_at': datetime.datetime(2022, 3, 25, 2, 39, 20, 736)} is not an example of the schema {
"type": "record",
"name": "test",
"fields": [
{
"type": {
"type": "long",
"logicalType": "timestamp-millis"
},
"name": "updated_at"
}
]
}
有知识渊博的人可以帮助我解决我做错的问题吗?
通过调试 avro 包解开了谜团。
日期时间值必须是时区感知的才能正确分配给字段格式。
所以这有效:
datetime(2022, 3, 25, 2, 39, 20, 736, tzinfo=timezone.utc)
我正在尝试使用 avro-python3 库将我的数据导出到 python3 中的 avro 文件。我对日期时间类型有疑问。
这是我的代码:
import json
from datetime import datetime
import avro
from avro.datafile import DataFileWriter
from avro.io import DatumWriter
schema = {
'name': 'test',
'type': 'record',
'fields': [{'name': 'updated_at', 'type': {"type": "long", "logicalType": "timestamp-millis"}}]
}
schema_parsed = avro.schema.parse(json.dumps(schema))
with open('test.avro', 'wb') as f:
writer = DataFileWriter(f, DatumWriter(), schema_parsed)
writer.append({'updated_at': datetime(2022, 3, 25, 2, 39, 20, 736)})
writer.close()
我收到以下错误:
avro.io.AvroTypeException: The datum {'updated_at': datetime.datetime(2022, 3, 25, 2, 39, 20, 736)} is not an example of the schema {
"type": "record",
"name": "test",
"fields": [
{
"type": {
"type": "long",
"logicalType": "timestamp-millis"
},
"name": "updated_at"
}
]
}
有知识渊博的人可以帮助我解决我做错的问题吗?
通过调试 avro 包解开了谜团。
日期时间值必须是时区感知的才能正确分配给字段格式。
所以这有效:
datetime(2022, 3, 25, 2, 39, 20, 736, tzinfo=timezone.utc)