我使用kafka-python处理kafka集群中的消息:
consumer = KafkaConsumer('session',auto_offset_reset ='最早']
为True时:
dict = consumer.poll(500)
for d in dict:
print d.topic, d.partition, d.value
这将导致错误“ AttributeError:'TopicPartition'对象没有属性'value'”。
“ dict”就是这样(来自“ print dict”)
{TopicPartition(topic=u'session', partition=0): [ConsumerRecord(topic=u'session', partition=0, offset=56, timestamp=None, timestamp_type=None, key=None, value='0000000000000000', headers=[], checksum=2855809697, serialized_key_size=-1, serialized_value_size=16, serialized_header_size=-1)]}
每个分区下可以有许多分区和数百个ConsumerRecord。从consumer.poll()访问那些ConsumerRecord的正确方法是什么?预先感谢。
答案 0 :(得分:0)
您在用法上有误;默认情况下,“对于dict中的d:”表示“对于dict.keys()中的d:”,因此您只能获取此dict的键。 试试这个:
dict = consumer.poll(500)
for key, value in dict.items():
print(key)
print()
for record in value[:10]:
print(record)
print()
这可以解决您的错误。