apache-spark - 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。
解决方案
我认为您应该使用此数据流-
源 Kafka 主题 -> 火花流消费者 -> 一些数据库(如 -influx db ) -> graphana
仅 jupyter notebook 和 python 不足以实现 spark 流的实时可视化
推荐阅读
- html - Zendesk 谈话链接
- r - 如何导出列拆分的子集?
- r - rvest,带有thead和tbody标签的表格
- c++ - 实现复制赋值运算符的正确方法
- ios - 当单元格可见时在轮播中播放视频
- javascript - 异步加载 Chart.js 工具提示信息
- javascript - 如何使用 QWebEngineView 通过 id 获取页面元素
- c# - Unity(对象引用未设置为对象的实例)错误 *C#*
- angular - Angular ServiceWorker 返回响应 404 Not Found 并启用输出散列
- python - 如何将文件夹中的多个文件打包成一个二进制文件并获取每个文件的偏移量?