Spark大数据分析与实战笔记(第九章 综合案例—Spark实时交易数据统计-01) 文章目录每日一句正能量第9章 综合案例—Spark实时交易数据统计章节概要9.1 系统概述9.1.1 系统背景介绍9.1.2 系统架构设计9.1.3 系统预览9.2 Redis数据库9.2.1 Redis介绍9.2.2 Redis部署与启动9.2.3 Redis操作及命令每日一句正能量年华似水匆匆流淌所有人终将老去但总有人正年轻。不必为“我”终将逝去而感伤因为“年轻”本身——那股热情、好奇、勇气与希望——会如同火种永远在人类中传递。第9章 综合案例—Spark实时交易数据统计章节概要本章通过Spark Streaming技术开发商品实时交易数据统计模块案例该系统主要功能是在前端页面以动态报表展示后端不断增长的数据这也是所谓的看板平台。通过学习并开发看板平台从而帮助读者理解大数据实时计算架构的开发流程并能够掌握Spark实时计算框架Spark Streaming在实际应用中的使用方法。本章将 针对Spark实时交易数据统计进行详细讲解。9.1 系统概述9.1.1 系统背景介绍双十一是每年11月11日的电商促销活动2018年最终24小时总成交额为2135亿。现场庆典中成交额在大屏幕中实时刷新展示这就用到了数据可视化技术数据可视化是借助于图形化手段将数据库中的每条数据以图像形式展示在前端页面清晰有效地传达交易信息。利用实时数据构建动态看板平台可以使决策人员快速理解并处理相应的信息数据还能够通过观察看板平台展示的动态数据发现大数据集的市场变化和趋势动向。在看板平台系统中动态数据的展示就需要流式计算系统每时每刻接收数据、分析数据以及转发数据通过本书学习的Spark实时计算框架Spark Streaming和Kafka就可以完成这一技术需求。9.1.2 系统架构设计下面通过一张图来描述本章实时统计成交额计算系统的基础架构图如图所示。从图中可以看出本系统所需的数据是来源于用户访问订单页面在商品成交后数据会转发到订单系统中根据不同的业务需求数据来源于不同的模块在本案例中我们可以模仿一个订单系统每时每刻都产生一条订单并将这条订单数据发送至Kafka中。当数据发送至Kafka中就可以通过Spark Streaming定时从Kafka中读取一次数据并计算设置定时时间间隔内每个订单的数据信息将计算结果保存至数据库中为了方便在数据库中进行累加操作本案例将采用Redis数据库后续将会进行详细讲解。9.1.3 系统预览本案例实时交易数据统计是分析订单中的商品把每件商品的销售额进行汇总最终以图表的形式动态展示在前端页面中实际效果如图所示。在图中纵轴0-9表示商品编号横轴表示该商品成交额总和。在看板平台中可以将各种业务数据展示在页面中读者可自行添加需求在页面展示其运行效果即可。9.2 Redis数据库源源不断的数据经过Spark Streaming程序处理完成后需要将计算结果保存到文件系统或者数据库中同时保存的数据也在不断地更新Redis是一款高性能键值对数据库与传统数据库不同的是Redis的数据是存在内存中的因此读写数据速度非常快本项目将使用Redis数据库存储就算结果。9.2.1 Redis介绍Redis是使用C语言开发的一个开源的高性能键值对数据库它通过提供多种键值对数据类型适应不同场景下的存储需求到目前为止Redis支持键值对数据类型分别是字符串数据类型String、哈希Hash、列表List、集合Set以及有序集合Zset五种。Redis性能非常出色整个数据库的数据都被加载到内存中进行操作Redis会定期通过异步操作把数据写入磁盘中进行保存从而保证了数据库的兼容性避免在计算机断电时存储在内存中的数据丢失官方数据显示Redis每秒可处理超过十万次读写操作因此Redis可被应用于商品秒杀、缓存页面数据、应用排行榜等大量的高并发场景。9.2.2 Redis部署与启动通过Redis官方网站http://download.redis.io/releases/下载Redia安装包本书选用reduis-3.2.9.tar.gz版本下载完成后将安装包上传至hadoop01节点的/export/software目录下将其解压至/export/serers目录下命令如下。tar-zxvf redis-3.2.8.tar.gz-c/export/servers/结果如下图所示由于Redis是由C语言开发因此安装Redis需要将源码进行编译编译依赖于gcc环境所以要安装gcc安装命令如下。yuminstallgcc结果如下图所示进入redis-3.2.8解压目录编译redis源码命令如下。cd/export/servers/servers/redis-3.2.8/makemakePREFIX/export/serves/redisinstall结果如下图所示执行上述命令后会在/export/servers/目录下创建一个新的Redis文件夹里面存放了执行Redis服务的相关程序启动Redis服务需要redis.conf配件文件它是用来设置Redis服务端启动时所加载的配置参数。将源码包中附带的配置文件拷贝到redis/din目录中命令如下。cpredis.conf /export/servers/redis/bin/结果如下图所示拷贝完成后进入/expot/servers/redis/bin/目录使用vi命令打开redis.conf配置文件修改Redis服务端IP地址具体参数如下。bind192.168.121.134结果如下图所示至此Redis配置完成下面启动Redis服务端命令如下。./redis-server ./redis.conf启动Redis服务后执行效果如图9-3所示。图9-3Redis服务会占用会话窗口如果想在后台启动Redis服务只需要在redis.conf配置文件中修改daemonize yes参数即可表示允许后台启动运行。结果如下图所示9.2.3 Redis操作及命令启动Redis服务后克隆hadoop01的会话终端并在redis/bin目录下启动Redis客户端命令如下。./redis-cli-h192.168.121.134Redis客户端启动成功后的界面效果如图9-4所示。图9-4Redis包含5种数据类型操作方式大致相同哈希数据类型是Redis常用的数据类型数据结构为MapString, MapString, String,常用操作命令如表所示。命令名称相关说明hset(key, field, value)向名称为key的hash中添加元素fieldhget(key, field)返回名称为key的hash中field对应的valuehincrby(key, field, integer)将名称为key的hash中field的value增加integerhexists(key, field)名称为key的hash中是否存在键为field的域hdel(key, field)删除名称为key的hash中键为field的域hlen(key)返回名称为key的hash中元素个数hkeys(key)返回名称为key的hash中所有键hvals(key)返回名称为key的hash中所有键对应的value下面来看看具体的示例hsetkeyfieldvalue将哈希表key中的字段field的值设为value。 示例hset key1 field1 value1 hgetkeyfield 获取存储在哈希表中指定字段的值。 示例hget key1 field4 hincrbykeyfield increment 为哈希表key中的指定字段的整数值加上增量increment。 示例 hset key2 field11hincrby key2 field11hget key2 field1 hexistskeyfield 查看哈希表key中指定的字段是否存在。 示例 hexists key1 field4 hexists key1 field6 hdelkeyfield1[field2]删除一个或多个哈希表字段 示例 hdel key1 field1 hexists key1 field1 hlenkey获取哈希表中字段的数量 示例hlen key1 hkeyskey获取所有哈希表中的字段 示例hkeys key1 hvalskey获取哈希表中所有值 示例hvals key1结果如下图所示转载自https://blog.csdn.net/u014727709/article/details/163802725欢迎 点赞✍评论⭐收藏欢迎指正

相关新闻

最新新闻

网络安全等保合规文档整理

网络安全等保合规文档整理

一站式速查文档:GB/T 22239-2019 等保2.0基本要求 全解读 2020年至今最新法律法规 十大分类防护措施与对应安全设备 面试备题与速记口诀,全部整合在一篇,便于学习、面试与实操。第一章 标准概述与整体框架 1.1 它是什么 全称:《…

2026/8/24 14:23:05
大数据Redis之——Redis6.2.6安装与使用(详细)

大数据Redis之——Redis6.2.6安装与使用(详细)

​ 目录 前期准备 Redis的环境搭建 1、Redis的下载安装 2、Redis的单节点配置 2.1 创建目录 2.2 编辑配置文件 2.3 启动Redis 2.4 连接测试 2.5 基本读写测试 2.6 停止单节点 3、Redis的集群搭建 3.1 修改核心配置文件 3.2 文件分发 3.3 修改从节点配置文件 3.…

2026/8/24 14:23:05
UFS3.1协议中文学习讲解(1~4)

UFS3.1协议中文学习讲解(1~4)

事先声明本文不用于任何商业行为,仅用于本人学习与记录。欢迎点赞、收藏、转发分享给朋友,禁止未经书面授权的复制、搬运、二次剪辑。如有引用请注明出处。标准规范仍然以《JESD220E-UFS3.1》为准本文撰写动机本人从毕业后从事存储固件行业2年&#xff0…

2026/8/24 14:23:05
无人井下封堵机器人:城市排水管网清淤封堵无人化方案

无人井下封堵机器人:城市排水管网清淤封堵无人化方案

城市排水管网清淤、封堵、抢修长期依赖人工下井作业,存在中毒、窒息、淹溺、物体打击和有限空间伤害风险。无人井下封堵机器人以履带驱动、水下定量封堵和可视化监控重构作业流程,适用于DN600~1200mm排水管道,最大作业深度10m,单次…

2026/8/24 14:23:05
小白程序员必看:3个月转行大模型开发,月薪40k经验全分享(收藏版)

小白程序员必看:3个月转行大模型开发,月薪40k经验全分享(收藏版)

本文作者分享了自己从Java后端工程师成功转型为Agent开发工程师的经历,详细描述了3个月内的学习计划、实战项目和面试准备。文章强调了掌握大模型原理、Prompt Engineering、Function Calling等关键技术的重要性,并指出Java背景在Agent开发领域的优势。作…

2026/8/24 14:23:05
评价类模型

评价类模型

总览类别常见模型主要作用数模常用度主观赋权AHP 层次分析法根据专家判断确定权重★★★★★客观赋权熵权法根据数据差异程度定权★★★★★客观赋权CRITIC根据变异性指标冲突性定权★★★★☆客观赋权变异系数法根据相对离散程度定权★★★☆☆组合赋权AHP-熵权、博弈论组合赋…

2026/8/24 14:18:05