如何在python

时间:2018-12-30 07:56:44

标签: python pyspark kafka-consumer-api kafka-python

我使用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的正确方法是什么?预先感谢。

1 个答案:

答案 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()

这可以解决您的错误。