问题描述
我从 Kafak 消费了一些事件,数据如下所示:
-------------------------------------------
Time: 2020-12-21 21:52:58
-------------------------------------------
150.0
-------------------------------------------
Time: 2020-12-21 21:53:00
-------------------------------------------
155.0
-------------------------------------------
Time: 2020-12-21 21:53:02
-------------------------------------------
160.0
sc = SparkContext(appName='Python Streaming')
ssc = StreamingContext(sc,1)
ssc.checkpoint("abc")
# create the stream
kvs = KafkaUtils.createStream(ssc,\
'XXXX:YYYY',\
'streaming-consumer',\
{'topic':1})
windows=kvs.window(10,2).map(lambda x: json.loads(x[1])['val'])
#here the avgs are created
avg=windows.map(lambda x:(x,1)).reduce(lambda x,y:(x[0]+y[0],x[1]+y[1])).map(lambda x:x[0]/x[1])
#creates the log shown above
avg.pprint()
现在,我想要一个微小的(实时)条形图可视化。我通过在 avg=windows.map(lambda x:(x,x[1]+y[1])).map(lambda x:x[0]/x[1])
之后添加以下两行来尝试这样的事情 - 但是,它不起作用(情节未更新):
avg.foreachRDD(lambda x:myList.append(x.collect()))
sns.barplot(x=myList[-1])
可视化此类流数据的最简单方法是什么?
我正在使用 juypiter notebook 和 python3。
解决方法
我认为你应该使用这个数据流 -
源 Kafka 主题 -> 火花流消费者 -> 一些数据库(如 -influx db) -> graphana
仅仅 jupyter notebook 和 python 不足以实现 Spark 流的实时可视化