提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:陈俊吉|2016-11-23 10:48:17.000|阅读 943 次
概述:本文我们将学习如何使用Apache Spark streaming,Kafka,Node.js,Socket.IO和Highcharts构建实时分析Dashboard。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
问题描述
电子商务门户希望构建一个仪表盘,对每分钟发货的订单数量做到可视化,从而优化物流的效率。
解决方案
解决方案之前,先快速看看我们将使用的工具:
Apache Spark – 一个通用的大规模数据快速处理引擎。的批处理速度比Hadoop MapReduce快近10倍,而内存中的速度则快近100倍。更多关于Apache Spark的信息。
Python – Python是一种广泛使用的高级,通用,解释,动态编程语言。 更多关于Python的信息。
Kafka – 一个高吞吐量,分布式消息发布订阅系统。 更多关于Kafka的信息。
Node.js – 基于事件驱动的I/O服务器端JavaScript环境,运行在V8引擎上。 更多关于Node.js的信息。
Socket.io – Socket.IO是一个构建实时Web应用程序的JavaScript库。它支持Web客户端和服务器之间的实时、双向通信。
Highcharts – 网页上交互式JavaScript图表。 更多关于Highcharts的信息。
CloudxLab – 提供一个真实的基于云的环境,用于练习和学习各种工具。你可以通过在线注册立即开始练习。
如何构建数据Pipeline?
下面是数据Pipeline高层架构图
我们的实时分析Dashboard将如下所示
\
让我们从数据Pipeline中的每个阶段的描述开始,并完成解决方案的构建。
阶段1
当客户购买系统中的物品或订单管理系统中的订单状态变化时,相应的订单ID以及订单状态和时间将被推送到相应的Kafka主题中。
数据集
由于没有真实的在线电子商务门户网站,我们准备用CSV文件的数据集来模拟。让我们看看数据集:
数据集包含三列分别是:“DateTime”、“OrderId”和“Status”。数据集中的每一行表示特定时间时订单的状态。这里我们用“xxxxx-xxx”代表订单ID。我们只对每分钟发货的订单数感兴趣,所以不需要实际的订单ID。
可以从CloudxLab GitHub仓库克隆完整的解决方案的源代码和数据集。
数据集位于项目的spark-streaming/data/order_data文件夹中。
推送数据集到Kafka
shell脚本将从这些CSV文件中分别获取每一行并推送到Kafka。推送完一个CSV文件到Kafka之后,需要等待1分钟再推送下一个CSV文件,这样可以模拟实时电子商务门户环境,这个环境中的订单状态是以不同的时间间隔更新的。在现实世界的情况下,当订单状态改变时,相应的订单详细信息会被推送到Kafka。
运行我们的shell脚本将数据推送到Kafka主题中。登录到CloudxLab Web控制台并运行以下命令。
阶段2
在第1阶段后,Kafka“order-data”主题中的每个消息都将如下所示
阶段3
Spark streaming代码将在60秒的时间窗口中从“order-data”的Kafka主题获取数据并处理,这样就能在该60秒时间窗口中为每种状态的订单计数。处理后,每种状态订单的总计数被推送到“order-one-min-data”的Kafka主题中。
请在Web控制台中运行这些Spark streaming代码
阶段4
在这个阶段,Kafka主题“order-one-min-data”中的每个消息都将类似于以下JSON字符串
阶段5
运行Node.js server
现在我们将运行一个node.js服务器来使用“order-one-min-data”Kafka主题的消息,并将其推送到Web浏览器,这样就可以在Web浏览器中显示出每分钟发货的订单数量。
请在Web控制台中运行以下命令以启动node.js服务器
现在node服务器将运行在端口3001上。如果在启动node服务器时出现“EADDRINUSE”错误,请编辑index.js文件并将端口依次更改为3002…3003…3004等。请使用3001-3010范围内的任意可用端口来运行node服务器。
用浏览器访问
启动node服务器后,请转到//YOUR_WEB_CONSOLE:PORT_NUMBER访问实时分析Dashboard。如果您的Web控制台是f.cloudxlab.com,并且node服务器正在端口3002上运行,请转到//f.cloudxlab.com:3002访问Dashboard。
当我们访问上面的URL时,socket.io-client库被加载到浏览器,它会开启服务器和浏览器之间的双向通信信道。
阶段6
一旦在Kafka的“order-one-min-data”主题中有新消息到达,node进程就会消费它。消费的消息将通过socket.io发送给Web浏览器。
阶段7
一旦web浏览器中的socket.io-client接收到一个新的“message”事件,事件中的数据将会被处理。如果接收的数据中的订单状态是“shipped”,它将会被添加到HighCharts坐标系上并显示在浏览器中。
我们还录制了一个关于如何运行上述所有的命令并构建实时分析Dashboard的视频。
我们已成功构建实时分析Dashboard。这是一个基本示例,演示如何集成Spark-streaming,Kafka,node.js和socket.io来构建实时分析Dashboard。现在,由于有了这些基础知识,我们就可以使用上述工具构建更复杂的系统。
详情请咨询!
客服热线:023-66090381
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
工业4.0优选产品 | 商业智能和绩效管理软件领导者,帮助企业成为业绩最佳的分析驱动型企业
SPSS Modeler工业4.0优选产品 | 在历史数据中发现规律以预测未来事件,做出更好的决策,实现更好的成效
IBM BigInsights for Apache Hadoop经济高效地存储、管理和分析大数据
IBM InfoSphere Streams高效捕获和分析动态数据的软件平台
InfoSphere DataStage助您发现、充实、集成和管理数据的整个生命周期
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢