为什么这个数据不是python中avro模式的示例?
使用Kafka Python在Python中解码来自Kafka的Avro消息时遇到一些问题。简而言之,我只关注使用avro包解码消息。我已经用官方avro文档中的模式和示例编写了一个测试: 我收到一个错误,为什么这个数据不是python中avro模式的示例?,python,python-3.x,avro,Python,Python 3.x,Avro,使用Kafka Python在Python中解码来自Kafka的Avro消息时遇到一些问题。简而言之,我只关注使用avro包解码消息。我已经用官方avro文档中的模式和示例编写了一个测试: 我收到一个错误,数据{“name”:“Alyssa”,“favorite_number”:256,“favorite_color”:“blue”}不是模式的示例。鉴于此模式和数据直接来自Python的官方Avro文档,我做错了什么 Traceback (most recent call last): F
数据{“name”:“Alyssa”,“favorite_number”:256,“favorite_color”:“blue”}不是模式的示例。鉴于此模式和数据直接来自Python的官方Avro文档,我做错了什么
Traceback (most recent call last):
File "main.py", line 36, in <module>
writer.write('{"name":"Alyssa","favorite_number":256,"favorite_color":"blue"}', encoder)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/avro/io.py", line 979, in write
raise AvroTypeException(self.writers_schema, datum)
avro.io.AvroTypeException: The datum {"name":"Alyssa","favorite_number":256,"favorite_color":"blue"} is not an example of the schema {
"type": "record",
"name": "User",
"namespace": "example.avro",
"fields": [
{
"type": "string",
"name": "name"
},
{
"type": [
"int",
"null"
],
"name": "favorite_number"
},
{
"type": [
"string",
"null"
],
"name": "favorite_color"
}
]
}
回溯(最近一次呼叫最后一次):
文件“main.py”,第36行,在
write.write(“{”name:“Alyssa”,“favorite_number:”256,“favorite_color:”blue“}”,编码器)
写入文件“/opt/virtualenvs/python3/lib/python3.8/site packages/avro/io.py”,第979行
引发AvroTypeException(self.writers\u架构、数据)
avro.io.AvroTypeException:datum{“name”:“Alyssa”,“favorite_number”:256,“favorite_color”:“blue”}不是模式的示例{
“类型”:“记录”,
“名称”:“用户”,
“名称空间”:“example.avro”,
“字段”:[
{
“类型”:“字符串”,
“名称”:“名称”
},
{
“类型”:[
“int”,
“空”
],
“姓名”:“最喜爱的号码”
},
{
“类型”:[
“字符串”,
“空”
],
“名称”:“最喜欢的颜色”
}
]
}
您当前拥有
writer.write('{"name":"Alyssa","favorite_number":256,"favorite_color":"blue"}', encoder)
因此,您提供的数据是一个字符串。如果将其更改为以下词典:
writer.write({"name":"Alyssa","favorite_number":256,"favorite_color":"blue"}, encoder)
然后它就起作用了
writer.write({"name":"Alyssa","favorite_number":256,"favorite_color":"blue"}, encoder)