首页 > 解决方案 > PySpark:在 Barplot 中使用 TransformedDStream

问题描述

我从 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,1)).reduce(lambda x,y:(x[0]+y[0],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。

标签: apache-sparkpysparkapache-spark-sqlspark-streaming

解决方案


我认为您应该使用此数据流-

源 Kafka 主题 -> 火花流消费者 -> 一些数据库(如 -influx db ) -> graphana

仅 jupyter notebook 和 python 不足以实现 spark 流的实时可视化


推荐阅读