- 公司的带数据培训实战营要做出一个东西来,作为新组长试试做一个朴素的demo,课题来源是Spark课程实验案例:Spark+Kafka构建实时分析Dashboard;
- 本来想用springboot做的,框架都搭好了,卡在了socketio上,正好看到有个flask+socketio+echarts的CPU监控工具(不知道哪个博客是真的原创,就放这个链接)比较值得借鉴,就改成了相同的框架;
- 改成python后卡最长时间的json的序列化和反序列化,最后参考了(同样不知道是不是原的)链接,在此基础上写了一个反序列化为对象List的方法;
- 最后包含两个项目,主项目是Flask 项目python_dashboard,辅助项目是Spark流计算数据处理项目DashboardDataProcessing;
- 已经完成了水博客的工作,参考Spark+Kafka构建实时数据分析面板
-
会python,flask,scala,基本的前端语法;
-
部署一个单机的kafka,mac可以参考链接;
-
部署一个单机spark;
-
我的环境是python3.7(anaconda版)+pyCharm,需要第三方库包括Flask,Flask-SocketIO,Kafka;
-
scala项目环境是scala12.10+IDEA,依赖库在pom.xml中有;
-
最后测试的浏览器最好用chrome或safari,360极速浏览器可能会吃掉CSS;
-
使用PyCharm或其他编辑器打开项目python_dashboard,用IDEA打开项目DashboardDataProcessing;
-
修改python_dashboard项目中的setting.py,根据实际情况修改配置;
-
修改DashboardDataProcessing中KafkaProcessing.scala第20行,把设置setting.py的路径;
-
运行DashboardDataProcessing项目KafkaProcessing.scala,然后运行python_dashboard项目中app.py;
步骤1和2同半成品
- 使用maven或者其他方式打包DashboardDataProcessing项目,并测试能否在本地正常运行该项目,如果出错后面就不用看了;
- 修改setting.py中JAR_PATH为打包后DashboardDataProcessing的实际地址,app.py第26行取消注释;
- 运行app.py即可启动项目,有需要的可以将python_dashboard一起打包;
将setting.py中CONSUMER_TOPIC和PRODUCER_TOPIC的值设为一样,则默认使用python_dashboard中内置的慢速数据处理方法;
-
定时生成若干条随机数据,转为Json;
-
Producer传输这些数据;
-
SparkStreaming接收这些数据;
-
SparkStreaming处理好数据并重新发送;
-
Consumer接收数据并传输给socket-io;
-
前端通过echarts绘制实时折线图;
- 总体展示
- 4个城市对比
- 男女对比
- 4种支付方式对比
- 6种消费类型对比
- 前端页面刷新时间理论上应该是2s,实际上流计算环境是8s,过一会稳定后才会变回2s;
- scala项目打包后本地无法运行,当前问题是Exception in thread "streaming-start" java.lang.NoClassDefFoundError: org/apache/spark/kafka010/KafkaConfigUpdater;
- 添加数据库的支持,处理过数据的努力就不会木大了;
- 找一个数据输入接口,随机生成数据不太靠谱;