技术标签: 机器学习 spark 人工智能 hadoop 知识图谱 大数据 大数据毕业设计 推荐算法
基于hive数据仓库的贵州旅游景点数据分析系统的设计与实现
随着旅游业的快速发展和数字化转型,旅游数据的收集和分析变得越来越重要。贵州省作为一个拥有丰富旅游资源的地区,旅游数据的分析对于促进旅游业的发展和提升旅游体验具有重要意义。基于Hive数据仓库的贵州省旅游景点数据分析系统的设计与实现,旨在建立一个高效、可靠且功能丰富的系统,帮助利益相关者准确理解和利用旅游数据,为决策和规划提供可靠依据。
本系统通过数据采集与存储模块,将贵州省的旅游景点数据收集到一个中心化的数据平台,确保数据的准确性和一致性。同时,借助Hive数据仓库的设计,实现了灵活的数据模型和高效的数据查询与分析能力。系统的功能模块设计包括数据导入模块和查询与分析模块,前者实现了对新数据的导入和预处理,后者提供了多维度的数据查询和分析功能。
关键词:hive 旅游景点 数据分析
目 录
1 绪论........................................................................1
2 开发工具及相关技术..........................................................2
2.1 Hive描述................................................................2
2.2 MySQL描述...............................................................2
2.3 Spring Boot概述.........................................................3
2.4 Pycharm简介.............................................................4
2.5 Vue.js描述..............................................................4
3 系统分析....................................................................5
3.1 可行性分析..............................................................5
3.2 功能需求分析............................................................5
3.2.1 前台用户功能........................................................6
3.2.2 后台管理员功能......................................................7
3.3 安全需求分析............................................................8
3.3.1 系统安全............................................................8
3.3.2 数据安全............................................................9
3.4 非功能需求分析..........................................................9
3.5 数据流程分析...........................................................10
4 系统设计...................................................................11
4.1 数据库设计.............................................................11
4.1.1 数据需求分析.......................................................11
4.1.2 数据库设计.........................................................12
4.1.3 数据库表的设计.....................................................12
4.2 系统架构设计...........................................................13
4.3 系统功能设计...........................................................14
4.4 系统总体设计...........................................................15
5 系统实现...................................................................16
5.1 数据库访问层的实现.....................................................16
5.2 注册用户的实现.........................................................17
5.3 登录功能的实现.........................................................17
5.4 修改用户资料的实现.....................................................18
5.5 留言与评论板块的实现...................................................19
5.6 景区购票板块的实现.....................................................20
5.7 景区管理与分类管理的实现...............................................21
6 系统测试...................................................................22
6.1 测试目的...............................................................22
6.2 功能测试...............................................................22
6.3 性能测试...............................................................23
7 总结.......................................................................24
参考文献.....................................................................25
1 绪论
1.1研究背景及意义
贵州省作为中国的旅游目的地之一,拥有丰富多样的自然景观和独特的民族文化,吸引了大量的游客前来观光和旅游。如今,随着旅游业的迅速发展和智能化技术的进步,对于旅游数据的分析和利用变得越来越重要。然而,目前尚缺乏一个完备的贵州省旅游景点数据分析系统,以全面、准确地了解和管理贵州省的旅游景点数据,为相关决策提供支持和参考。
本项目的目的是基于Hive数据仓库,设计和实现一个贵州省旅游景点数据分析系统,旨在为用户提供方便、快捷的数据分析和查询功能,帮助相关人员深入了解贵州省旅游景点的情况,提供数据支持和参考,促进旅游业的持续发展。
总之,贵州省旅游景点数据分析系统的设计与实现将为贵州旅游业的发展带来巨大的推动力,为决策者提供科学的决策依据,提升景区的运营效率和服务质量,进一步提升贵州省作为旅游目的地的知名度和吸引力。
1.2 开发现状
国外与国内相比下来,国外由于互联网很早就拥有了分析系统,因此,他们对于旅游分析系统方面的研究远比国内深入,而纵观几十年来的科技发展,可以很清楚的看到他们的旅游分析系统的发展阶段,具体可以分为三个阶段。
国内的旅游信息化与国外相比由于起步较晚以及多种原因,等到改革开放后才开始有这方面的研究,即使起步晚经过国人的不断学习与研究,在旅游信息化科技发展方面已经堪比国外大国了。国内旅游网站发展可以分为三个阶段。
2 开发工具及相关技术
2.1 Hive描述
Apache Hive是一个容错,分布式的数仓系统,可实现大规模分析。 而且Hive 元存储(HMS)提供了一个元数据的中央存储库,可以很快速的分析并做出有用的信息和数据驱动的决策,因此它也是很多数据湖架构的关键组成部分。 Hive通过Apache Hadoop建立,再由hdfs支持S3,adls,gs等存储。除此之外Hive 还允许用户使用 SQL 读取、写入和管理数据。
优点:
缺点:
2.2 MySQL描述
MySQL是一个DBMS(数据库管理系统)。由于它的体积小,总体拥有成本低,速度快,开放源码等特点,也让它成为了当前最流行的关系型数据库管理系统,很多中小型的网站开发者都会用MySQL使用SQL语言操作,将MySQL作为网站数据库。
优点:
缺点:
2.3 Spring Boot概述
Spring Boot是一个快速开发的框架。用于简化加快Spring应用的建立,运行,调节测试和安装部署。可以更好地解决依赖问题,简化并且加快了Java web的开发,让开发人员可以更合理的运用自己的开发时间。
优点:
2.4 Pycharm简介
Pycharm是一种Python IDE,是Python语言的高效率开发工具,如项目管理,调试,单元测试,代码跳转,版本控制,智能提示等。
优点:
缺点:
2.5 Vue.js 描述
Vue是一款用于构建用户界面的JavaScript框架。他基于CSS,HTML,JavaScript构建。可以高效的构建想要的界面。还是一个渐进式框架,可以逐步集成且相当灵活。
优点:
缺点:
3 系统分析
3.1 可行性分析
(1)技术方面,本系统使用了Hive,MySQL技术来支持数据逻辑与事务,P然后前台的页面显示用H5来做,Python来爬取数据,Spring Boot做前端的框架。这些技术都由本人在课堂上经过学习积累所得以及一些编程网站学习所得。这些技术都有在课堂上做不同的项目实践过,可以更好地开发系统。从技术方面来看,这个系统是可以实现的。
(2)经济方面,因为这个系统的目的是为游客提供更好的旅游路线以及购票服务,还有工作人员更好的管理后台,这就是我们能够直接使用信息化软件,而且这个系统主要成本集中于对数据后期的维护和管理,他所提供的高效率和低成本远远低于一般的系统。同时也可以很明显的发现这个系统的实际应用方面的价值已经超过了系统实际开发和维护所需的成本,因此从经济上说,本系统是可行的。
(3)实用方面,本系统包含了购票,评论,相关景点推荐,在当前大时代是紧跟时代潮流的,还有更优的旅游路线,游客可以通过互联网更清晰的了解到自己需要的东西,并且非常便捷和快速,还提高了游客的体验感觉。所以从实用方面也是可行的。
3.2 功能需求分析
本系统的主要功能是用户经过注册账号,登陆账号,然后进入购票面板中选中想要购买的景点票据。后台管理员主要负责对游客购票进行处理,发布景点相关信息,维护景点信息,用户注册和购票信息。
用户用例图:
核心算法代码分享如下:
import sys
from db import cnn
import pandas as pd
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
def predict1():
sql = "select `ctime`, `num` as value from table09" \
" order by ctime asc "
with cnn.cursor() as cursor:
cursor.execute(sql)
print(sql)
names = []
y = []
for line in cursor.fetchall():
# print(line)
y.append(line[1])
names.append(line[0])
y = y[::-1]
X = [1, 2, 3, 4, 5]
X = pd.DataFrame(X)
X = X.values
Poly_regressor = PolynomialFeatures(degree=2)
Poly_X = Poly_regressor.fit_transform(X)
regressor = LinearRegression()
regressor.fit(Poly_X, y)
p1 = regressor.predict(Poly_regressor.fit_transform([[8]]))
p2 = regressor.predict(Poly_regressor.fit_transform([[9]]))
p3 = regressor.predict(Poly_regressor.fit_transform([[10]]))
r = []
r.append(round(float(p1[0]),2))
r.append(round(float(p2[0]),2))
r.append(round(float(p3[0]),2))
return r
def predict2():
sql = "select `ctime`, `num` as value from table09" \
" order by ctime asc "
with cnn.cursor() as cursor:
cursor.execute(sql)
print(sql)
names = []
y = []
for line in cursor.fetchall():
# print(line)
y.append(line[1])
names.append(line[0])
y = y[::-1]
X = [1, 2, 3, 4, 5]
X = pd.DataFrame(X)
X = X.values
Poly_regressor = PolynomialFeatures(degree=2)
Poly_X = Poly_regressor.fit_transform(X)
regressor = LinearRegression()
regressor.fit(Poly_X, y)
p1 = regressor.predict(Poly_regressor.fit_transform([[8]]))
p2 = regressor.predict(Poly_regressor.fit_transform([[9]]))
p3 = regressor.predict(Poly_regressor.fit_transform([[10]]))
r = []
r.append(round(float(p1[0]),2))
r.append(round(float(p2[0]),2))
r.append(round(float(p3[0]),2))
return r
def predict3():
sql = "select `ctime`, `num` as value from table09" \
" order by ctime asc "
with cnn.cursor() as cursor:
cursor.execute(sql)
print(sql)
names = []
y = []
for line in cursor.fetchall():
# print(line)
y.append(line[1])
names.append(line[0])
y = y[::-1]
X = [1, 2, 3, 4, 5]
X = pd.DataFrame(X)
X = X.values
Poly_regressor = PolynomialFeatures(degree=2)
Poly_X = Poly_regressor.fit_transform(X)
regressor = LinearRegression()
regressor.fit(Poly_X, y)
p1 = regressor.predict(Poly_regressor.fit_transform([[8]]))
p2 = regressor.predict(Poly_regressor.fit_transform([[9]]))
p3 = regressor.predict(Poly_regressor.fit_transform([[10]]))
r = []
r.append(round(float(p1[0]),2))
r.append(round(float(p2[0]),2))
r.append(round(float(p3[0]),2))
return r
def predict4():
sql = "select `ctime`, `num` as value from table09" \
" order by ctime asc "
with cnn.cursor() as cursor:
cursor.execute(sql)
print(sql)
names = []
y = []
for line in cursor.fetchall():
# print(line)
y.append(line[1])
names.append(line[0])
y = y[::-1]
X = [1, 2, 3, 4, 5]
X = pd.DataFrame(X)
X = X.values
Poly_regressor = PolynomialFeatures(degree=2)
Poly_X = Poly_regressor.fit_transform(X)
regressor = LinearRegression()
regressor.fit(Poly_X, y)
p1 = regressor.predict(Poly_regressor.fit_transform([[8]]))
p2 = regressor.predict(Poly_regressor.fit_transform([[9]]))
p3 = regressor.predict(Poly_regressor.fit_transform([[10]]))
r = []
r.append(round(float(p1[0]),2))
r.append(round(float(p2[0]),2))
r.append(round(float(p3[0]),2))
return r
if __name__ == '__main__':
#name = sys.argv[1]
ret = []
r1 = predict1()
r2 = predict2()
r3 = predict3()
r4 = predict4()
ret.append(r1)
ret.append(r2)
ret.append(r3)
ret.append(r4)
print(ret)
print(r1)
print(abs(int(r1[0])))
print(abs(int(r1[1])))
print(abs(int(r1[2])))
sql_day01="replace into table09(ctime,num) values (%s,%s)"
data_day01 =('2024-02',abs(int(r1[0])))
sql_day02="replace into table09(ctime,num) values (%s,%s)"
data_day02 = ('2024-03', abs(int(r1[1])))
sql_day03="replace into table09(ctime,num) values (%s,%s)"
data_day03 = ('2024-04', abs(int(r1[2])))
cur=cnn.cursor()
cur.execute(sql_day01,data_day01)
cur.execute(sql_day02,data_day02)
cur.execute(sql_day03,data_day03)
cnn.commit()
cur.close()
文章浏览阅读9.4k次。mkdir命令(创建目录)通过 mkdir 命令可以实现在指定位置创建以指定的文件名命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。命令格式:mkdir [选项] dirname。命令中的 [选项]:-m:用于对新建目录设置存取权限_ubuntu huoquwenjianmulu
文章浏览阅读92次。在学习Python之前,首先要确定自己学习Python的方向和目的。不知道Python有哪些方向的可以看下面这张图:_管理学科研用python需要学习什么
文章浏览阅读131次。我有一个应用程序,我在其中使用flask、python、ajax、json、javascript和传单。这个应用程序读取一个csv文件,将其转换为json格式,然后将其返回给ajax调用。我的问题是没有返回geojson。在控制台中,我在控制台日志中收到5000个网络错误。最终结果是在单张映射层中使用返回的geojson。如果我删除jsonify,返回的结果会很好,但是它是一个字符串,这对层来说不..._json 不读缓存
文章浏览阅读2.4w次,点赞22次,收藏52次。添加socket头文件sys/socket.h时:报无法打开源文件,sys/socket.h将头文件:#include <sys/socket.h>,替换成:#include <winsock.h>,问题解决vs出现 fatal error C1083: 无法打开包括文件: “sys/socket.h”: No such file …..._sys/socket.h
文章浏览阅读1k次。在介绍K8S之前,先来看看服务器的演变过程:物理机时代、虚拟机时代、容器化时代。
文章浏览阅读1.1k次,点赞2次,收藏3次。HEVC帧间预测在AMVP模式下是依靠xEstimateMvPredAMVP函数获取预测MV(MVP)的。xEstimateMvPredAMVP的作用是建立MVP列表并获取最优MVP,最终将最优MVP以及其索引等信息返回给上层函数——preInterSearch_hevc amvp
文章浏览阅读339次。使用AngularJS简单实现表头排序和表格搜索的功能,效果如下:点击表头中的一项,可以根据该列属性对数据进行排序: 程序如下:[html] view plain copy> html lang="en" ng-app="a3_4"> head> met_表头排序功能 demo
文章浏览阅读5k次,点赞12次,收藏35次。一、功能要求请编写一个程序,完成对员工的管理 ,实现员工列表显示、员工添加功能。二、具体功能要求及推荐实现步骤a.实现员工列表查询功能,给前端返回员工列表json字符串;b.实现员工添加,给前端返回是否成功的标识;6.在employee_list.html实现发送获取所有员工的异步请求,并把结果展示出来。7、在employee_add.html实现获取用户的输入并异步发送给后端,如果添加成功,跳转到列表界面。_employeedaos employeedaos = new employeedaos();
文章浏览阅读783次。本文转自电气工程师必备的公众号“电气工程师助手”SIMATIC S7-1200具有集成化PROFINET接口、强大的集成工艺功能和灵活的可扩展性特点,为各种工艺任务提供了简单的通信和有效的解决方案,尤其满足多种应用中完全不同的自动化需求。1.中央处理器单元(CPU)常规规范CPU 1211C 技术规范CPU 1212C 技术规范CPU 1214C 技术规范CPU 1215C 技术规范CPU 121..._西门子plc simulink
文章浏览阅读6k次,点赞5次,收藏29次。通过实验来分析ISIS防环机制:实验拓扑:实验验证:ATT置位默认路由分析Level-2路由泄露到Level-1区域,LSP的Up/Down置位的作用验证分析:在R2上查看ISIS的LSDB:[R2]dis isis lsdb Database information for ISIS(1) ..._is——is协议防环机制
文章浏览阅读383次。开发环境:Ubuntu 18.04 LTS + ROS Melodic + ViSP 3.3.1文章内容主要参考ViSP官方教学文档:https://visp-doc.inria.fr/doxygen/visp-daily/tutorial_mainpage.html 本文主要介绍了如何使用ViSP自动设定阈值对图像进行二值化处理,主要涉及Huang、Intermodes、Isodata、Mean、Otsu、Triangle等自动阈值划分算法。本文主要参考了imgproc中的 tutorial-._intermodes阈值分割
文章浏览阅读1.4k次。海康Visionmaster-VM2D,VM3D,VM深度学习对电脑配置要求_海康vm安装