ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Spark大数据分析与实战笔记(第九章 综合案例—Spark实时交易数据统计-01)

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欢迎 点赞✍评论⭐收藏欢迎指正
返回列表