关键七步,用Apache Spark构建实时分析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将如下所示

大数据

\

 

让我们从数据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字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值