分析来自Kafka消费者的消息

时间:2018-11-20 11:17:53

标签: python json apache-kafka kafka-consumer-api

我建立了一个Kafka消费者-生产者系统,我需要处理传输的消息。这些是JSON文件(例如

)中的行
ConsumerRecord(topic=u'json_data103052', partition=0, offset=676, timestamp=1542710197257, timestamp_type=0, key=None, value='{"Name": "Simone", "Surname": "Zimbolli", "gender": "Other", "email": "zzz@uiuc.edu", "country": "Nigeria", "date": "11/07/2018"}', checksum=354265828, serialized_key_size=-1, serialized_value_size=189)

我正在寻找一种易于实施的解决方案

  • 定义流式传输窗口
  • 分析窗口中的消息(唯一身份用户和类似事物的数量)

有人对如何进行有建议吗?谢谢。

我在使用Spark时遇到问题,所以我宁愿避免使用它。我正在使用Jupyter在Python中编写脚本。

这是我的代码:

from kafka import KafkaConsumer
from random import randint
from time import sleep

bootstrap_servers = ['localhost:9092']

%store -r topicName    # Get the topic name from the kafka producer
print topicName

consumer = KafkaConsumer(bootstrap_servers = bootstrap_servers,
                         auto_offset_reset='earliest'
                        )
consumer.subscribe([topicName])

for message in consumer:
    print (message)

2 个答案:

答案 0 :(得分:1)

我想您需要使用Kafka Streams API。您具有开窗所需的所有功能。 您可以在此处找到有关Kafka Streams的更多信息:

https://kafka.apache.org/documentation/streams/

答案 1 :(得分:1)

对于您的情况,Kafka Streams似乎很合适。它具有以下4种类型的窗口支持:

scantext = StringVar()
pcb_entry=Entry(top_frame,background='white', textvariable=scantext)

对于python,有一个库:https://github.com/wintoncode/winton-kafka-streams

这可能对您有用。