我在用Kafka和avro信息。我的一个字段定义如下:
{
"name": "a_number",
"type": "bytes",
"logicalType": "decimal",
"precision": 4,
"scale": 4
}
使用avro console consumer,我看到如下消息:
{"a_number": "\t\u0000°"}
我希望能和 59
.
按理说,bytearray应该是数字的两个补充。我试过用python的 struct
模块来解码,但我得到的值没有任何意义:
bs = '\t\u0000°'.encode('utf8') # b'\t\x00\xc2\xb0'
struct.unpack('>l', bs)[0] / 1e4 # 15104.4784
如何验证消息?我可以解码字符串不知何故,或有avro控制台消费者破坏了它?
1条答案
按热度按时间a8jjtwal1#
你似乎很难做到这一点。如何在python中提取avro文件的模式建议使用以下方法:
在调试器中单步查看读者如何解码您的消息应该可以让您更接近于组装一个“原始”的手工解码。