千家信息网

怎么用Apache Spark构建实时分析Dashboard

发表于:2025-02-10 作者:千家信息网编辑
千家信息网最后更新 2025年02月10日,怎么用Apache Spark构建实时分析Dashboard,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。我们将学习如何使用Apac
千家信息网最后更新 2025年02月10日怎么用Apache Spark构建实时分析Dashboard

怎么用Apache Spark构建实时分析Dashboard,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

我们将学习如何使用Apache Spark streaming,Kafka,Node.js,Socket.IO和Highcharts构建实时分析Dashboard。

问题描述

电子商务门户希望构建一个实时分析仪表盘,对每分钟发货的订单数量做到可视化,从而优化物流的效率。

解决方案

解决方案之前,先快速看看我们将使用的工具:

  • Apache Spark – 一个通用的大规模数据快速处理引擎。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将如下所示

实时分析Dashboard

让我们从数据Pipeline中的每个阶段的描述开始,并完成解决方案的构建。

阶段1

当客户购买系统中的物品或订单管理系统中的订单状态变化时,相应的订单ID以及订单状态和时间将被推送到相应的Kafka主题中。

数据集36大数据(http://www.36dsj.com/)

由于没有真实的在线电子商务门户网站,我们准备用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服务器后,请转到http://YOUR_WEB_CONSOLE:PORT_NUMBER访问实时分析Dashboard。如果您的Web控制台是f.cloudxlab.com,并且node服务器正在端口3002上运行,请转到http://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。现在,由于有了这些基础知识,我们就可以使用上述工具构建更复杂的系统。

关于怎么用Apache Spark构建实时分析Dashboard问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

数据 订单 实时 分析 运行 服务器 阶段 服务 主题 浏览器 状态 浏览 更多 信息 文件 消息 时间 控制台 方案 环境 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 杭州怡佳互联网科技有限公司 数据库怎么创建一个表 国际上最著名的三大核苷酸数据库 免费虚拟主机怎么搭建数据库教程 数字时代网络技术公司 软件开发的系统实现部分写什么 美肌工坊 互联网科技美肤中心 云南ip服务器托管虚拟主机 社交网络技术架构 邯郸工业大型服务器哪家好 成都软件开发8miu 昆明互联网科技哪家好 助理软件开发工程师好不好 综合网络技术服务优点 网络安全法明确了网络空间 数据库硬盘空间规划 数据库中的表间关系 定制平板软件开发 广东 PDA盘点软件开发商 华为用到7纳米的服务器芯片 苹果服务器可以修改端口号吗 软件开发 充值话费平台 销售软件开发订制 中兴软件开发综合面试会挂么 美国服务器不限内容 网络安全p 老是出现发现程序正在修改服务器 临沂智慧医养软件开发电话 网络安全法明确了网络空间 福州招数据库
0