如何使用python kafka消费者反序列化Java生产者产生的数据

时间:2019-10-15 13:19:53

标签: python-3.x apache-kafka serializer consumer

我需要用Python编写kafka使用者以获取Java Produced产生的数据。 Java Producer使用“ org.apache.kafka.common.serialization.LongSerializer”和“ org.apache.kafka.common.serialization.ByteArraySerializer”对键和值进行了序列化。我无法反序列化python中的数据。如果您之前遇到过类似的问题,有人可以帮我吗?

key = b'\x00\x04'

value = b'\x00\x00\x00\x03\x00\x02\x12\xf6  \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00J\xce\xff\x17\x00\x00A\x00\x97\xb0\x00\x00\x00\x00\x01\x98\x00\x02\x12\xf6IBULHSGFINEQ\x00\x01\x00\x02\x01}\x96\xb5\x00\x00\x00\x00\x00\x02\x00\x00^\xdd\x00\x00J\xce\xff\x17 @\x00\x00\x00\x00\x00\x00C\x0fC\x8d\xaa\x0fw\xb0010138794 \x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01^\x00\x00\x01\xf4\x00\x00\x00\x94\x00\x00^\xdd\x00\x00\x00\x00\x00\x00\x00\x00J\xce\xff\x17\x00\x00\x00\x00J\xce\xff\x17P@\x00\x04\x00\x00h\xe112802\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0012802       \x00\x01\x00\x07B\xf2\xf2\xa3n\xcdL`\x00\x00J\xce\xff\x17 :\x80\x00\x00\x00DCTPS0979A\x00\x00\x00\x00\x00\x00C\x0fC\x8d\xaa\x0f_\xd012151'

我尝试使用下面的value_deserializer代码,如https://buildmedia.readthedocs.org/media/pdf/kafka-python/1.1.1/kafka-python.pdf

所示
  1. value_deserializer=lambda m: json.loads(m.decode('ascii')) but I am getting error: UnicodeDecodeError: 'ascii' codec can't decode byte 0xd2 in position 7: ordinal not in range(128

  2. value_deserializer=lambda m: json.loads(m.decode('utf-8')), error: UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 7: invalid continuation byte

  3. value_deserializer=msgpack.unpackb, error: File "msgpack/_unpacker.pyx", line 208, in msgpack._unpacker.unpackb msgpack.exceptions.ExtraData: unpack(b) received extra data.

  4. value_deserializer=msgpack.loads, error: File "msgpack/_unpacker.pyx", line 208, in msgpack._unpacker.unpackb msgpack.exceptions.ExtraData: unpack(b) received extra data.

0 个答案:

没有答案