admin 管理员组

文章数量: 1086019


2024年3月13日发(作者:html视频文件怎么打开)

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

作者:迟殿委

来源:《无线互联科技》2022年第07期

摘要:随着大数据技术不断发展,各行业的信息智能化程度越来越高,也对旅游酒店业产

生了很大影响。各大旅游平台积累了大量的城市酒店基本数据和游客评论数据,为围绕酒店大

数据进行数据分析提供了基本前提。文章以青岛市旅游酒店数据为数据源,提出了一种酒店大

数据分析和可视化平台的设计和实现方案。首先设计爬虫程序采集酒店基本数据和用户评论数

据,然后将数据存储到Hadoop 平台,再通过 Spark 对数据进行预处理和分析,最后将分析结

果和决策以可视化图表方式进行展现,从而为用户出行和酒店从业者管理规划提供参考。

关键词:大数据; Hadoop;Spark ;酒店;可视化

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.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 编程语言实现,部分核心代码如下:

var df: DataFrame = sqlContext. read. format (" com. databricks. spark. csv "). option ("

header ", " true "). option(" inferSchema ", true. toString ). load ( input +"

hdfsdata/hotelbasic. csv")

df= df. dropDuplicates();//删去重复行

df = df. filter ( row => !( row. mkString ("").

isEmpty&& row. length>0))

df= df. na. drop( how =" all")//删除空行

//酒店星级类型叫法做统一规范

df= df. na. replace("星级详情",Map("国家旅游局评定为四星级"->"高档型","国家旅游

局评定为五星级"->"豪华型","国家旅游局评定为三星级"->"舒适型","国家旅游局评定为二星

级"->"经济型"))

//重新格式化地址列,将地址规范为青岛市各区县名称

valdeffun = udf(fc(_:String))

df= df. withColumn("酒店地址", deffun( functions. col("酒店地址")))

df. coalesce(1). write. mode( SaveMode. Overwrite). option (" mapreduce.

fileoutputcommitter. marksuccessfuljobs"," false")

. option(" header"," false"). option (" sep",",").

csv( input+" hotelbasic")

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

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

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

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

(3)根据 Hive 仓库数据,进行城市酒店数据评分、用户印象、各区县酒店数量和评分、

网络人气、酒店星级、来此地游客的旅游目的类型统计等数据分析,每一项统计都构建Hive

内部表,并最终导入 MySQL 表。

这里以酒店星级分布情况统计表为例,如表名为“star_stat”,统计城市的酒店星级类型及

对应的酒店数量,所以设计的 Hive 内部表脚本如下:

create table star_stat( stardetail string,nums int) insert overwrite table star_stat select

stardetail,count

(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 编程语言实现,部分核心代码如下:

var df: DataFrame = sqlContext. read. format (" com. databricks. spark. csv "). option ("

header ", " true "). option(" inferSchema ", true. toString ). load ( input +"

hdfsdata/hotelbasic. csv")

df= df. dropDuplicates();//删去重复行

df = df. filter ( row => !( row. mkString ("").

isEmpty&& row. length>0))

df= df. na. drop( how =" all")//删除空行

//酒店星级类型叫法做统一规范

df= df. na. replace("星级详情",Map("国家旅游局评定为四星级"->"高档型","国家旅游

局评定为五星级"->"豪华型","国家旅游局评定为三星级"->"舒适型","国家旅游局评定为二星

级"->"经济型"))

//重新格式化地址列,将地址规范为青岛市各区县名称

valdeffun = udf(fc(_:String))

df= df. withColumn("酒店地址", deffun( functions. col("酒店地址")))

df. coalesce(1). write. mode( SaveMode. Overwrite). option (" mapreduce.

fileoutputcommitter. marksuccessfuljobs"," false")

. option(" header"," false"). option (" sep",",").

csv( input+" hotelbasic")

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

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

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

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

(3)根据 Hive 仓库数据,进行城市酒店数据评分、用户印象、各区县酒店数量和评分、

网络人气、酒店星级、来此地游客的旅游目的类型统计等数据分析,每一项统计都构建Hive

内部表,并最终导入 MySQL 表。

这里以酒店星级分布情况统计表为例,如表名为“star_stat”,统计城市的酒店星级类型及

对应的酒店数量,所以设计的 Hive 内部表脚本如下:

create table star_stat( stardetail string,nums int) insert overwrite table star_stat select

stardetail,count


本文标签: 酒店 数据 用户 评论 进行