Как десериализовать данные, созданные производителем Java с использованием Python Kafka Consumer - PullRequest
0 голосов
/ 15 октября 2019

Мне нужно написать потребителя kafka на Python, чтобы получить данные, произведенные 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.

...