此项目适用于real time search engine - log analysis
表现。
我有从Spark处理到Kafka的实时流数据。
现在有了Kafka输出,
我想get the data from the Kafka using Flask
..和visualize it using Chartjs
或其他一些可视化..
如何从Kafka using the python flask
获取实时流数据?
我知道如何开始?
任何帮助将不胜感激!
谢谢!
答案 0 :(得分:1)
我会查看用于python的Kafka包:
http://kafka-python.readthedocs.org/en/master/usage.html
这应该让您设置从Kafka流式传输数据。另外,我可以查看这个项目:https://github.com/travel-intelligence/flasfka这与使用Flask和Kafka一起使用(只是在谷歌搜索中找到它)。
答案 1 :(得分:0)
我正在处理类似的问题(带有来自Kafka的实时流数据的小型Flask应用)。
你需要做几件事来设置它。首先,您需要KafkaConsumer来抓取消息:
from kafka import KafkaConsumer
consumer = KafkaConsumer(group_id='groupid', boostrap_servers=kafkakserver)
consumer.subscribe(topics=['topicid'])
try:
# this method should auto-commit offsets as you consume them.
# If it doesn't, turn on logging.DEBUG to see why it gets turned off.
# Not assigning a group_id can be one cause
for msg in consumer:
# TODO: process the kafka messages.
finally:
# Always close your producers/consumers when you're done
consumer.close()
这是关于最基本的KafkaConsumer。 for
循环阻塞线程并循环,直到它提交了最后一条消息。还有consumer.poll()
方法可以在给定时间内获取您可以使用的消息,具体取决于您希望如何构建数据流。 Kafka的设计考虑了长期运行的消费者流程,但如果您正确地提交消息,您也可以根据需要打开和关闭消费者。
现在您拥有了数据,因此您可以使用Flask将其流式传输到浏览器。我不熟悉ChartJS,但是live streaming from Flask的核心是调用一个python函数,该函数在循环内以yield
结尾,而不是在处理结束时只有return
。
在流媒体上查看Michael Grinberg's blog和his followup作为使用Flask进行流式传输的实际示例。 (注意:任何实际上在严肃的Web应用程序中流式传输视频的人都可能希望将其编码为视频编解码器,如使用ffmpy广泛使用的H.264并将其包装在MPEG-DASH中......或者可能选择更多的框架这个东西给你。)