基于SpringBoot+Spark+Vue的旅游大数据分析平台的设计与实现
2024-05-30陈金龙罗德明赵仲达
宁 毅,陈金龙,罗德明,赵仲达
(桂林电子科技大学 计算机与信息安全学院,广西 桂林 541004)
0 引言
据统计,桂林市的GDP中,旅游业占比超过30%,并且每年接待数百万国内外游客,为当地带来可观的经济效益。可见,旅游业已成为桂林经济的重要成分。旅游业不但繁荣桂林的经济,而且还缓解了城市就业的压力,扩大了对外开放,搞活市场流通,带动了第三产业乃至整个国民经济的发展[1]。
如今,互联网发展已经相当成熟,旅游业也逐渐向数字化、智能化方向转型,景区的服务创新水平随着时间而动态变化[2]。旅游数据的规模不断扩大,包括酒店入住数据、景点游客流量数据、航班购票数据等。这些数据蕴含着丰富的信息,可以帮助旅游从业者更好地了解市场需求、优化产品设计、提高客户满意度等。然而,由于数据来源分散、格式多样、数量庞大,单靠人工分析已经很难满足实际需求,加之市面上也没有针对桂林A级景区做数据分析的应用平台,因此,本文针对桂林市的景区构建一个初步、相对简易的游客数据、景区数据分析平台。
1 平台设计
1.1 总体架构设计
前端技术涉及Vue、Vuex、Echarts、Axios。将平台各个数据指标通过地图、折线图、条形图、雷达图、表格等形式可视化,便于用户了解景区大体情况[3]。
后端使用Maven仓库,整合SpringBoot、MyBatis-Plus用以快速搭建开发脚手架,数据库则使用HBase和MySQL。HBase用来存储使用Python爬虫技术采集的大数据集,包括游客Vlog数据、迁入桂林指数、景区攻略数等信息;MySQL则用以存储无需分析的和分析后的数据;数据处理分析使用Scala语言读取HBase数据,经过Spark处理分析,将结果保存于MySQL。采用上述作为平台整体的技术架构是因为Spark 适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代算法、交互式查询、流处理[4]。另外,HBase集群具有线性伸缩、自动容灾和负载均衡的优势,可以很容易地增加或者替换集群节点以扩展集群的存储和计算能力[5]。具体如图1所示。
图1 系统架构
1.2 功能结构设计
面向桂林市A级景区客流大数据分析平台的功能模块划分为景区信息管理、舆情分析、客流统计、客源分析4个模块,如图2所示。
图2 系统功能结构
1.3 数据库设计
在细化平台功能之后再将数据库设计精化到具体的实体表、字段及实体之间的关联关系表[6]。通过ER图描绘各个表或表之间的联系,如图3所示。
图3 景区、客流、微博签到、指数、词条关系
参考各数据集来源于不同的网络平台,实际设计表时无法做到完全符合三范式的要求,具体的数据库如表1所示。
表1 数据库关系模型
1.4 用户界面设计
平台在UI设计方面,使用Vue、Vuex、Axios技术可以基于组件化开发美观的界面,配合ECharts技术可以快速引入各种图表以满足自身平台的功能需求。由于不同的用户设备的屏幕尺寸、分辨率不一,本平台虽然没有对移动端浏览器做出适配,一套代码想同时适应PC和手机几乎不可能,但是在前端页面开发时考虑浏览器、设备屏幕适配问题,因此采用Flex布局、百分比布局的响应式界面设计,便于适配不同的设备屏幕[7]。
2 系统实现
面向桂林A级景区客流大数据分析平台具体实现由数据采集、数据存储、Spark数据分析、后端业务处理和UI设计5个功能模块组成,各模块关系如图4所示。下面将介绍各模块的实现。
图4 平台模块关系
2.1 数据采集模块
使用Python爬虫技术作为第三方库收集与初步过滤分析桂林A级景区游客数量、行为和趋势等方面数据的工具[8]。将采集到的数据保存到HBase、MySQL数据库中,以便进行进一步的分析处理。
2.2 数据存储模块
数据存储模块使用关系型MySQL和非关系型HBase数据库,其中MySQL存储与平台直接相关的数据,数据采集爬取的大多数据可直接保存到MySQL里面供业务处理模块操作,数据库设计方面也会根据平台的需求,对经常使用到的字段建立索引,提高查询效率。HBase则存储冗余性大、数据量大、待处理分析的数据,如线路评论及其指标、全国来桂客流信息、游客信息等[9]。
2.3 Spark数据分析模块
2.3.1 客源分析实现过程
首先,建立远程HBase数据库连接,过滤空值、无用数据值(例如来源地为未知、游客数量为0等数据集),将初步处理的数据保存到HBase数据库表,此步处理具体实现如图5所示。
图5 数据初步处理流程
其次,基于Scala的Spark数据处理分析,读取并处理passenger_flow的数据得到初始RDD。flatmap将原始RDD数据进行扁平化处理得到的元组格式如((“2018-08-30”,“世外桃源”),4)的RDD算子,进一步对“世外桃源”和业务相关的MySQL数据库景区表进行ID映射,最终的RDD的元组形式为((“2018-08-30”,景区的ID),4),将数据保存到MySQL里面。
2.3.2 来源地分析实现
area_distribution表的数据简单但是数据量非常多,所以处理起来就非常简易。只需简单的一两个RDD算子即可得到本文想要的数据格式,其格式转变如图6所示。
图6 省份来桂人数处理RDD转换
2.3.3 游客画像实现
游客信息表则是生成简单的游客画像,如游客年龄、性别。具体RDD算子数据格式转变如图7所示。
图7 游客信息RDD数据格式转变
2.3.4 A级景区线路指标分析实现
此功能对数据采集模块存储到HBase数据库的route_comment表数据进行处理分析。Scala编码连接HBase数据库后将RDD转换生成DataFrame。SparkSQL编码获取指标Jason字符串,由Jason字符串生成Scala实例,多分支判断游客给线路的线程安排、住宿体验、交通体验、商家服务等指标的评分,最后各指标得分取均值和评论总数保存于MySQL数据库[10]。其代码实现流程如图8所示。
图8 线路指标分析流程
2.4 业务处理模块
该模块遵循后端开发dao层、service层、controller层的编程规范,每一层有各自的职责,降低耦合度[11]。该模块的各个包图关系如图9所示。
图9 系统包图
entity包对应数据库表的实体类,如景区表对应scenic类,包含字段信息、日期格式化和主键自增等约束。pojo包衍生于该包下的类,返回符合前端要求的格式数据。
mapper包对数据库进行常规的CRUD操作,结合数据库表索引情况编写适当的查询字段和条件,对于没必要的字段值就无需查询,减少网络传输开销。
service包出于controller与mapper之间,主要负责系统的业务逻辑,将用户传递的参数传递到service方法中,在mapper 包的基础上进行逻辑查询、封装数据格式返回controller层。
controller层是MVC(Model-View-Controller)设计模式中的一部分,用于处理应用程序的用户请求并根据请求选择合适的操作进行处理。在Web应用程序中,controller通常充当路由和请求处理的角色。它接收来自用户的HTTP请求,并将其路由到相应的业务逻辑处理代码中[12]。通过HTTP请求将数据返回给用户,生成响应格式的数据。
utils、config、advice包则是存放工具类、配置类和全局异常处理类,utils将系统用到的通用方法统一封装,例如实例判空、字符转日期、日期是否在2个时间之间等功能,降低耦合度。config用于解决SpringMVC跨域、配置MyBatis分页拦截器、配置MySQL连接等。advice则用作对controller层的补充,避免返回给用户异常信息,在controller异常处理不足的接口做统一的异常拦截返回前端提示信息。
2.5 平台UI实现模块
由于平台多是数据看板,因此,UI将多以地图、条形图、折线图和雷达图等图表形式进行设计与实现,下面给出具有代表性的页面并展开描述。
(1)首页展示桂林市景区的分布地图、接待总客流量和词云图等。其中,来源地分析指出各省来桂林游玩的人数,景区发布图标记出客流量数、搜索指数、评论数和攻略数。词云图则是对所有A级景区的评论做出的词云分析,将游客情绪分为3个等级给出各个等级的数量,还画出景区好评率Top10排名等,如图10所示。
图10 平台首页
(2)项目列表则是桂林A级景区的列表,通过表格信息展现,内容包含景区名、地址、好评率、中评率、差评率、签到数、搜索指数等情况。景区指标信息如图11所示。
图11 景区指标信息
(3)针对每一个景区监控其每个月的客流情况,如图12所示。
图12 景区客流情况
3 测试与验证
对平台进行单元模块测试更注重在数据处理分析这一模块,对该模块的方法、函数进行单元测试,随机截取原数据集进行测试比对,通过黑盒测试的方法验证方法的正确性[13]。在完成了数据处理分析之后,也对平台接口进行了集成测试,验证了数据及其接口的正确性。在平台完成之际对已部署到云服务器的平台接口使用JMeter进行了压力测试,用以鉴别是否能完成预期的相应时间和在该相应时间内的异常率[14]。
(1)模拟对A级景区信息列表接口在2 s内完成100个请求。其中,吞吐量为9.1/sec,实现了0%异常。
(2)对某个具体景区的游客情绪接口进行测试,同样是2 s内完成100个请求。此接口不像景区信息列表接口有那么多的联表查询,吞吐量达到了36.2/sec,异常为0%。
由于平台面向的用户并非大群体,系统吞吐量足以满足用户的性能需求,平均每次请求响应时间为200 ms,满足了平台单个请求响应时间为100 ms~300 ms的要求,且在此响应时间内没有丢弃请求的情况出现。
4 结语
面向桂林A级景区客流大数据分析平台提供了舆情分析、景区指标和客流情况等功能,可以给景区统筹管理者作为重要的参考依据,改善景区的设施环境,提高景区的服务质量,对景区的后续发展起到重要作用。然纵使该软件平台给决策者提供了景区服务游客反映情况,便于对景区服务做出改进,但是由于数据的有限性和自身技术的不足,不能对现有数据挖掘出更加有效的价值,平台的数据处理分析也是简单进行过滤、数据扁平化、映射本系统数据,基于自身能力并没有对数据太多的深度挖掘分析。本平台也是初版,待继续改进实现更加丰富、更加深入研究的功能,为景区管理提供更有价值的参考依据。