旅游酒店大数据分析平台的设计与实现

2022-06-23 01:08迟殿委
无线互联科技 2022年7期
关键词:爬虫星级可视化

迟殿委

(烟台理工学院 人工智能学院,山东 烟台 264003)

0 引言

随着计算机网络发展,各大型网站及平台实时更新[1],产生了大量数据。在当今大数据背景下[2],各行各业积累了海量数据,这些数据具有数据容量大、类型多、数据增长速度快、价值密度高的特点。许多学者也展开了关于大数据分析算法、分析模式及分析软件工具方面的研究[3]。其中,在大数据结构模型和数据科学理论体系、大数据分析和挖掘基础理论方面有很大进步[4],大数据的应用领域也从科学、工程、电信等领域扩展到各行各业[5]。在中国,许多规模较大的酒店都有自己的酒店管理系统,提供了完善的酒店管理和酒店预订、评价等服务。部分中小型酒店,由于缺乏投资,依托第三方平台提供在线服务,客户进行操作后,第三方平台会生成记录进行保存[6]。酒店长期积累了大量的在线基本数据和用户评论数据。针对酒店行业,如何利用大数据技术对现有的数据进行处理和分析,帮助酒店从业者和出行用户提供直观的参考决策,是亟须解决的问题。一方面,根据用户在线评论数据,为酒店从业者提供直观的决策支持,改善酒店管理,以获取最大利润;另一方面,提供某地区的酒店基本满意度情况、酒店分布情况、热门酒店等可视化图表,为用户出行提供可靠参考。

为了保证用户对旅游目标城市的酒店住宿和用户满意度、城市各地区酒店分布、用户出游目的等评论情况有更加直观、明确的了解,并为用户提前规划好住宿和旅游景点的选择提供决策支持,文章提出了一种基于城市酒店的大数据分析平台的设计和实现方案。

文章设计的平台基于山东省青岛市城市酒店基本数据和用户评论数据构建大数据平台数据仓库,并进行统计分析,最后以全球广域网(World Wide Web,WEB)网页形式将分析结果和决策以可视化图表方式进行展现。不仅可以为用户到某个城市出游住宿提供参考依据,也为酒店从业者提供了一定的决策支持,方便其在前期市场调查过程中提前了解各区酒店分布、满意度、用户出游目的等,如可以根据用户出游类型占比等信息来为酒店从业者规划酒店类型及相关配套等。

1 酒店大数据分析平台设计

文章设计的大数据分析平台采用的主要框架为Hadoop 生态圈组件及Spark 生态圈[7]组件。Hadoop 框架核心包括Hadoop 分布式文件系统(Hadoop Distributed File System,HDFS) 和MapReduce。其 中HDFS 是 由Nutch[8]的创始人结合Google 文件系统(Google File System,GFS)提出的NGFS[9],后来整合了MapReduce。文章介绍了酒店大数据分析平台的具体设计方案和实施步骤。

1.1 平台总体设计方案

一般的大数据分析系统的流程是:数据采集、数据存储和清洗、数据分析、数据可视化。本文根据数据分析的典型流程提出了适合酒店大数据平台的设计方案。首先对山东地区青岛市的酒店评论和酒店基本数据进行大数据分析和处理,数据存储到Hadoop 集群,经过数据清洗后构建Hive 数据仓库,并基于Hive 仓库进行数据分析,将分析结果最终导入MySQL,最后构建基于JavaEE 的Web 项目进行酒店数据可视化展示。平台的设计流程如图1 所示。

图1 酒店大数据平台设计流程

1.2 平台设计流程步骤

对某个城市的酒店基本数据及用户评论数据进行大数据分析和处理,这里以青岛市酒店数据为例,将平台最后分析结果存储到MySQL 中。总体设计主要从以下几个步骤来实现:

(1)设计爬虫程序爬取的某个地级市的酒店基本信息数据和用户评论数据,形成数据源,文件以csv 格式存储。

(2) 将数据源文件上传到Hadoop 平台,采用Hadoop 平台的HDFS 来存储数据,上传技术采用Python 的HDFS 模块实现。

(3)基于上传的数据采用Spark 程序进行清洗,使其符合大数据分析平台对数据的基本要求。主要进行以下工作:酒店基本数据集中的酒店星级类型这一列数据叫法不一致,比如有的酒店叫四星级,有的则叫高档型,这里统一处理,将所有的“国家旅游局评定为四星级”替换为“高档型”,将“国家旅游局评定为三星级”替换为“舒适型”,将“国家旅游局评定为二星级”替换为“经济型”,将“国家旅游局评定为五星级”替换为“豪华型”。由于大数据服务平台这个子模块并不对用户具体评论内容进行情感分析,情感分析交给情感分析子系统处理,所以这里将评论内容数据列去掉。删除所有空行。从酒店地址中提取区县名称替换掉地址那一列内容,为区县酒店分布统计提供标准数据。清洗后的数据分别存放到hdfs 的两个不同目录,比如名称为hotelbasic 的目录用于存放基本数据,名称为hoteldata 用于存放评论数据。

(4)数据仓库的构建与分析。首先基于HDFS 中的两个数据集的存储路径创建Hive 外部表,分别是用户评论数据表和酒店基本信息表。基于两张Hive 外部表,根据用户关心的酒店及评论信息的维度,进行数据分析处理,分为5 个关注的角度,并为每一个角度创建Hive 内部表,具体如下:用户印象统计,也是用户对该地区总体满意度情况。用户住过酒店发表评论同时也可以打分,以下是根据用户对该地区或城市的酒店总体评分情况来统计用户总体印象。评分4.5~5 分为优良,3.5~4.5 为良好,3.5 以下为差,统计酒店用户评分等级比例。统计在线评论数最多的十大酒店。一般情况下一家酒店的评论数量能代表这家酒店的人气,本文统计的是酒店名称和评论数目。不同旅游类型占比统计。根据用户评论外部表和用户评论数据表,进行不同旅游类型的统计,根据旅游类型结合用户满意度情况,为用户出行旅游提供参考,了解该地区更适合哪种类型的旅游。酒店星级分布情况统计,设计酒店星级和数量两个属性,显示不同星级的酒店数量占比,为不同层次的用户提供星级酒店的数量分布。城市不同区的酒店数量分布情况,以热力图方式呈现,同时需要显示每个地区酒店数量和平均评论得分情况。将产生的用户评论外部表的Hive 内部表数据,利用Sqoop 导出到MySQL 数据库。

(5)数据可视化部分。基于Mysql 数据库的分析结果,以图表的方式呈现到Web 网页上。利用SpringBoot+mybatis+MySQL 搭建项目,开发工具用IDEA,图表采用ECHARTS 来进行页面图表渲染支持。为了提高页面加载速度和用户体验,采用AJAX 异步加载的方式来进行。其中基于酒店基本数据的统计分析部分包括:用户旅游类型分析、各地区酒店数量统计、酒店星级情况统计。基于酒店用户评论数据的统计分析部分包括:网络人气酒店和用户满意度统计。

2 酒店大数据分析平台实现

2.1 爬虫采集模块

由于爬虫爬取数据时需要遍历采集的酒店链接,然后自动迭代下载信息,这就需要分析并设置好页面URL 的格式,这样才能让爬虫自动的遍历地址列表进行下载。

需要对酒店评论的页数进行拼接,通过酒店 ID、评论页码就可以拼接完成所有酒店的评论 JavaScript 对象简谱(JavaScript Object Notation,JSON) 地址,在采集的时候只需要按照拼接的规律进行迭代,就可以不间断地采集到酒店的评论数据。这里针对携程的酒店数据进行爬取,针对携程网站的结构和数据传输的特点进行了针对性的实现,具体的爬虫开发主要由以下几个部分组成。

(1)爬虫集合模块:分析从下载器模块采集到的 JSON 数据,然后提取出对应的数据以及相关的链接资源。

(2)数据流水线模块:主要是对目标站点的数据格式的设置,比如目标网站的地址,用户评论等。

(3)数据存储模块:通过数据清理、数据持久化等操作来处理由爬虫模块提取和发送过来的 Item 列,然后将数据列存储数据到指定的位置。

(4)IP 代理模块:此模块功能就是从专业提供免费 IP 代理的网站上采集 IP 到本地,为爬虫提供可用的 IP 代理,以防止爬虫被网站封锁。

2.2 数据上传和预处理

搭建Hadoop 平台集群,并安装Hive,MySQL 等相关软件。将爬取到的山东省青岛市酒店数据集以及用户评论数据集对应的逗号分隔值(Comma-Separated Values,CSV) 文件上传到Hdfs 存储。

数据预处理部分所做的工作参照1.2 小节的描述。数据清洗采用Spark 框架来实现。数据清洗的代码用Scala 编程语言实现,

部分核心代码如下:

2.3 Hive 数据仓库构建与数据分析

首先根据酒店基本数据和酒店评论数据创建外部表,构建酒店数据仓库,主要步骤如下:

(1)基于上传的酒店用户评论数据“hoteldata.csv”创建外部表,表名为“hotel_data”。

(2)基于上传的酒店基本数据“hotelbasic.csv”创建hive 表,表名为“hotel_basic”。

(3)根据Hive 仓库数据,进行城市酒店数据评分、用户印象、各区县酒店数量和评分、网络人气、酒店星级、来此地游客的旅游目的类型统计等数据分析,每一项统计都构建Hive 内部表,并最终导入MySQL 表。

这里以酒店星级分布情况统计表为例,如表名为“star_stat”,统计城市的酒店星级类型及对应的酒店数量,所以设计的Hive 内部表脚本如下:

这里的stardetail 表示酒店星级,num 表示数量。

设计MySQL 表脚本如下:

create table star_stat(stardetail varchar(33),nums int)

然后使用Sqoop 将Hive 内部表数据导入到MySQL。

2.4 数据可视化

根据酒店基本数据及用户评论数据的分析结果,为用户提供可视化展现。基于Mysql 数据库分析结果作为数据库,运用Ajax 技术异步加载并在网页上展示。可视化项目采用流行的JavaEE 框架SpringBoot 来快速搭建,图表呈现部分使用Echarts 实现。

这里以青岛市各地区酒店数量统计为例,前端异步请求数据采用Ajax 技术,后台查询青岛各区酒店数量并以Json 格式返回。通过Echarts 在页面加载返回的Json 数据。其中基于酒店基本数据的统计分析部分包括:用户旅游类型分析、各地区酒店数量统计、酒店星级情况统计,其中旅游类型统计如图2 所示。

图2 用户旅游类型统计

基于酒店用户评论数据的统计分析部分包括:网络人气酒店和用户满意度统计。其中酒店星级分布统计可视化效果如图3 所示。

图3 酒店星级占比统计

3 结语

文章提出了基于Hadoop 技术的旅游酒店大数据分析服务平台的设计和实现方案,以青岛市酒店数据为例,具体介绍了数据爬虫模块、数据上传模块、数据清洗模块、数据分析模块及数据可视化展示模块的设计和实现。在大数据时代,采用海量数据存储框架和并行处理框架称为必然,所以文章在数据分析模块采用了Hive 数据仓库技术,其底层是使用Hadoop 的Mapreduce 框架进行计算。存储框架使用Hadoop 的HDFS 来实现分布式存储。数据清洗模块工作量较大,因此采用Spark 框架来进行,Spark 基于内存进行数据处理的特点使得它比MapReduce 处理速度快很多。可视化模块基于echarts+ajax 实现图表的异步展示,优化了用户体验。

猜你喜欢
爬虫星级可视化
利用网络爬虫技术验证房地产灰犀牛之说
基于CiteSpace的足三里穴研究可视化分析
基于Power BI的油田注水运行动态分析与可视化展示
基于Python的网络爬虫和反爬虫技术研究
基于CGAL和OpenGL的海底地形三维可视化
“融评”:党媒评论的可视化创新
“星级联创”促进星光党建的创新实践
唐DM 智联创享型
大指挥官 2.0T四驱臻享版
利用爬虫技术的Geo-Gnutel la VANET流量采集