计算机毕业设计吊打导师Hadoop+Hive+PySpark旅游景点推荐 旅游推荐系统 景区游客满意度预测与优化 Apriori算法 景区客流量预测 旅游大数据 景点规划 知识图谱 机器学习 深度学习-程序员宅基地

技术标签: 机器学习  spark  人工智能  hadoop  知识图谱  大数据  大数据毕业设计  推荐算法  

基于hive数据仓库的贵州旅游景点数据分析系统的设计与实现

摘  要

随着旅游业的快速发展和数字化转型,旅游数据的收集和分析变得越来越重要。贵州省作为一个拥有丰富旅游资源的地区,旅游数据的分析对于促进旅游业的发展和提升旅游体验具有重要意义。基于Hive数据仓库的贵州省旅游景点数据分析系统的设计与实现,旨在建立一个高效、可靠且功能丰富的系统,帮助利益相关者准确理解和利用旅游数据,为决策和规划提供可靠依据。

本系统通过数据采集与存储模块,将贵州省的旅游景点数据收集到一个中心化的数据平台,确保数据的准确性和一致性。同时,借助Hive数据仓库的设计,实现了灵活的数据模型和高效的数据查询与分析能力。系统的功能模块设计包括数据导入模块和查询与分析模块,前者实现了对新数据的导入和预处理,后者提供了多维度的数据查询和分析功能。

关键词:hive  旅游景点  数据分析

目  录

摘  要

1 绪论........................................................................1

    1. 研究背景及意义..........................................................1
    2. 开发现状................................................................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 开发现状

  国外与国内相比下来,国外由于互联网很早就拥有了分析系统,因此,他们对于旅游分析系统方面的研究远比国内深入,而纵观几十年来的科技发展,可以很清楚的看到他们的旅游分析系统的发展阶段,具体可以分为三个阶段。

  1. 初始阶段:1959年IBM公司的销售员R. Blair Smith建议美国航空公司总裁C.R.Smith一起去开发一个计算机订位系统(SABRE),1960年世界首个计算机订位系统诞生。
  2. 发展阶段:由于科技的发展,1979年-1995年这期间很多机票的购买,酒店预订,乘车等事务都可以通过网络来完成,这让旅游系统得到更多的关注,大大推进了旅游网站的发展.
  3. 高潮阶段:旅游文化的兴起,1995年世界旅游组织,以及国外多个旅游机构举办了世界信息技术与旅游会议,体现出计算机与旅游业密不可分的关系。

国内的旅游信息化与国外相比由于起步较晚以及多种原因,等到改革开放后才开始有这方面的研究,即使起步晚经过国人的不断学习与研究,在旅游信息化科技发展方面已经堪比国外大国了。国内旅游网站发展可以分为三个阶段。

  1. 萌芽阶段:由于改革开放,大量国外旅游文化与科技涌入国内,1998年-2002年在互联网技术发展蓬勃时,旅游网站也因此出现在人们的视野
  2. 发展阶段:以前国内旅游网站主要以服务为主,在2003年-2008年这期间由于互联网的飞速发展,在以往以服务为主的基础上加上了旅游路线,以及在线旅游模式,这让国内旅游网站的用户迎来了爆发式的增长。
  3. 成熟阶段:从2008年以后,旅游网站已经成了我国游客必不可少的工具,即使已经成熟,但是仍然在稳步发展。

2 开发工具及相关技术

2.1 Hive描述

Apache Hive是一个容错分布式的数仓系统,可实现大规模分析。 而且Hive 元存储(HMS提供了一个元数据的中央存储库可以很快速的分析做出有用的信息数据驱动的决策,因此它多数据湖架构的关键组成部分。 Hive通过Apache Hadoop建立再由hdfs支持S3,adls,gs等存储。除此之外Hive 允许用户使用 SQL 读取、写入和管理数据。

优点:

  1. Hive不用去写MapReduce,大大减少了程序员的学习成本。
  2. Hive可以更好地处理大数据,由于延迟高的问题,处理小数据没有优势。
  3. Hive简单,易上手,拥有快速开发的能力
  4. 支持用户自定义函数

缺点:

  1. 调优困难
  2. 不擅长数据挖掘
  3. 不能表达迭代算法

2.2 MySQL描述

MySQL是一个DBMS(数据库管理系统)。由于它的体积小,总体拥有成本低,速度快,开放源码等特点,也让它成为了当前最流行的关系型数据库管理系统,很多中小型的网站开发者都会用MySQL使用SQL语言操作,将MySQL作为网站数据库。

优点:

  1. 体积小,总体拥有低,速度快,开放源码。
  2. 核心采用多线程编程,使用多线程实现MySQL可以充分利用CPU资源。
  3. 支持Windows,Linux,HP-UX,OpenBSD等多种操作系统。
  4. MySQL有安全的权限和口令系统,支持主机认证。

缺点:

  1. 不支持自定义数据类型。
  2. 安全系统过于复杂。
  3. 对触发器支持和存储过程不友好。
  4. 不能备份。

2.3 Spring Boot概述

Spring Boot是一个快速开发的框架。用于简化加快Spring应用的建立,运行,调节测试和安装部署。可以更好地解决依赖问题,简化并且加快了Java web的开发,让开发人员可以更合理的运用自己的开发时间。

优点:

  1. 能够快速建立项目。
  2. 提高了开发和部署的效率。
  3. 不用外部依赖Servlet容器也可以独立运行。
  4. 不用配置也可以也可以对主流开发框架进行开发。

2.4 Pycharm简介

Pycharm是一种Python IDE,是Python语言的高效率开发工具,如项目管理,调试,单元测试,代码跳转,版本控制,智能提示等。

优点:

  1. 支持web框架开发,如Flask,Pyramid,Django。
  2. 能够快速精确地修复bug。
  3. 可在远程主机上进行程序开发。

缺点:

  1. 界面过于复杂。
  2. 成本过高。

2.5 Vue.js 描述

Vue是一款用于构建用户界面的JavaScript框架。他基于CSS,HTML,JavaScript构建。可以高效的构建想要的界面。还是一个渐进式框架,可以逐步集成且相当灵活。

优点:

  1. 能够修改和使用现有的应用程序。
  2. 无论简单还是复杂都能够集成小部件且不会影响系统。
  3. 可以更好的编辑文档。
  4. 具有很强的适应性。

缺点:

  1. 不支持IE8。
  2. 存在程序开发问题。

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()

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/spark2022/article/details/138163971

智能推荐

Ubuntu中文件及目录的基本操作_ubuntu huoquwenjianmulu-程序员宅基地

文章浏览阅读9.4k次。mkdir命令(创建目录)通过 mkdir 命令可以实现在指定位置创建以指定的文件名命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。命令格式:mkdir [选项] dirname。命令中的 [选项]:-m:用于对新建目录设置存取权限_ubuntu huoquwenjianmulu

如何学习Python,以及新手如何入门?_管理学科研用python需要学习什么-程序员宅基地

文章浏览阅读92次。在学习Python之前,首先要确定自己学习Python的方向和目的。不知道Python有哪些方向的可以看下面这张图:_管理学科研用python需要学习什么

json ajax 不缓存,Jsonify数据不返回ajax-程序员宅基地

文章浏览阅读131次。我有一个应用程序,我在其中使用flask、python、ajax、json、javascript和传单。这个应用程序读取一个csv文件,将其转换为json格式,然后将其返回给ajax调用。我的问题是没有返回geojson。在控制台中,我在控制台日志中收到5000个网络错误。最终结果是在单张映射层中使用返回的geojson。如果我删除jsonify,返回的结果会很好,但是它是一个字符串,这对层来说不..._json 不读缓存

添加socket头文件sys/socket.h时: 报无法打开源文件,sys/socket.h-程序员宅基地

文章浏览阅读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

K8S原理架构与实战教程-程序员宅基地

文章浏览阅读1k次。在介绍K8S之前,先来看看服务器的演变过程:物理机时代、虚拟机时代、容器化时代。

HEVC代码学习——帧间预测:预测MV获取(xEstimateMvPredAMVP、fillMVPCand)_hevc amvp-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏3次。HEVC帧间预测在AMVP模式下是依靠xEstimateMvPredAMVP函数获取预测MV(MVP)的。xEstimateMvPredAMVP的作用是建立MVP列表并获取最优MVP,最终将最优MVP以及其索引等信息返回给上层函数——preInterSearch_hevc amvp

随便推点

AngularJS 的小demo——表头排序+表格搜索(过滤器)_表头排序功能 demo-程序员宅基地

文章浏览阅读339次。使用AngularJS简单实现表头排序和表格搜索的功能,效果如下:点击表头中的一项,可以根据该列属性对数据进行排序: 程序如下:[html] view plain copy> html lang="en" ng-app="a3_4"> head> met_表头排序功能 demo

考试内容及参考_employeedaos employeedaos = new employeedaos();-程序员宅基地

文章浏览阅读5k次,点赞12次,收藏35次。一、功能要求请编写一个程序,完成对员工的管理 ,实现员工列表显示、员工添加功能。二、具体功能要求及推荐实现步骤a.实现员工列表查询功能,给前端返回员工列表json字符串;b.实现员工添加,给前端返回是否成功的标识;6.在employee_list.html实现发送获取所有员工的异步请求,并把结果展示出来。7、在employee_add.html实现获取用户的输入并异步发送给后端,如果添加成功,跳转到列表界面。_employeedaos employeedaos = new employeedaos();

电气simulink常用模块_「西门子1200PLC教程」2.CPU家族及模块-程序员宅基地

文章浏览阅读783次。本文转自电气工程师必备的公众号“电气工程师助手”SIMATIC S7-1200具有集成化PROFINET接口、强大的集成工艺功能和灵活的可扩展性特点,为各种工艺任务提供了简单的通信和有效的解决方案,尤其满足多种应用中完全不同的自动化需求。1.中央处理器单元(CPU)常规规范CPU 1211C 技术规范CPU 1212C 技术规范CPU 1214C 技术规范CPU 1215C 技术规范CPU 121..._西门子plc simulink

ISIS 防环机制分析_is——is协议防环机制-程序员宅基地

文章浏览阅读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协议防环机制

ViSP学习笔记(十):自动阈值划分_intermodes阈值分割-程序员宅基地

文章浏览阅读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阈值分割

海康Visionmaster-VM2D,VM3D,VM深度学习对电脑配置要求_海康vm安装-程序员宅基地

文章浏览阅读1.4k次。海康Visionmaster-VM2D,VM3D,VM深度学习对电脑配置要求_海康vm安装

推荐文章

热门文章

相关标签