计算机毕业设计hadoop+spark知识图谱课程推荐系统 课程预测系统 课程大数据 课程数据分析 课程大屏 mooc慕课推荐系统 大数据毕业设计

本科毕业设计(论文)

题目基于 Hadoop和Spark的课程推荐系统的设计与实现

烟台南山学院教务处

二〇二年六月

    系科技与数据学院数据科学与软件工程系

    业数据科学与大数据技

    级数据科学2001

    名张子莉

    号202020709112

指导教师宋晓娜

烟台南山学院毕业设计(论文)原创性声明

本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行

研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含

任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做

出重要贡献的个人和集体,均已在论文中作了明确的说明并表示了谢

意。本声明的法律结果由本人承担。

论文作者签名:

年     月      日

烟台南山学院关于毕业设计(论文)使用授权的说明

本人完全了解烟台南山学院有关保留、使用学士学位论文的规定,

即:学校有权保留、送交论文的复印件,允许论文被查阅,学校可以

公布论文的全部或部分内容,可以采用影印或其他复制手段保存论文。

指导教师签名:

      月     日

论文作者签名:

       月       日

基于Hadoop和Spark的课程推荐系统的设计与实现

摘  要

如今,计算机和网络技术迅猛发展,数字化教育逐渐兴起,网上教育平台也大量涌现。比如说中国大学Mooc网,Icc教育平台,网易云课堂,沪上网校等等。这些教育平台为学生提供了广阔的学习空间。但这些平台由于数据量巨大,想要获取所需数据需要耗费大量的时间,而且对这些数据并没有比较完备的分析,如果设计一个可以将有用数据进行数据分析并可视化,就可以明确用户的需求,为在线教育平台提供了参考价值。

本系统基于HadoopSpark等大数据技术设计,数据来源是通过Python爬虫获取网络数据,数据清洗与处理采用了Hadoop中的数据清洗工具Mapreduce,数据分析阶段采用了Spark,数据可视化阶段采用FlaskEcharts。采用Vue.js搭建前端框架,采用Spring Boot搭建后端框架,采用MySQL建立数据库。采用VS CodeIDEA 作为主要开发工具。对网络海量的课程数据信息以图表的形式进行一个直观的展示,此外,该系统还具备了对课程的购买和查询功能等,充分体现了大数据技术在教育领域的应用价值。

关键词数据可视化  网络爬虫  Hadoop  Spark

Design and Implementation of the Course Recommendation System based on Hadoop and Spark

ABSTRACT

Nowadays, with the rapid development of computer and network technology, the rise of digital education, and a large number of online education platforms. For example, China University Mooc network, Icc education platform, netease Cloud classroom, Shanghai online school and so on. These educational platforms provide students with a broad learning space for them. However, due to the huge amount of data, these platforms need a lot of time to obtain the required data, and there is no relatively complete analysis of these data. If one is designed to analyze and visualize the useful data and clarify the needs of users, it provides reference value for the online education platform.

This system is designed based on big data technologies such as Hadoop and Spark. The data source is network data acquisition through Python crawler, the data cleaning tool Mapreduce in Hadoop is used for data cleaning and processing, Spark is used in the data analysis stage, and Flask and Echarts are used in the data visualization stage. The Vue.js framework is used on the front end and the Spring Boot framework on the back end, MySQL was used to establish the database. The VS Code and IDEA were used as the main development tools. The online massive amount of course data information is intuitively displayed in the form of charts. In addition, the system also has the function of purchase and query of courses, which fully reflects the application value of big data technology in the field of education.

Key words: Data visualization,  Web Crawler,  Hadoop  ,Spark

目录

第1章  绪论

1.1  研究背景及意义

1.2  国内外研究现状

1.2.1  国内研究现状

1.2.2  国外研究现状

1.3  论文组织结构

1.4  本章小结

第2章  主要开发工具及关键技术介绍

2.1  主要开发工具介绍

2.1.1  WebStorm

2.1.2  IntelliJ IDEA

2.1.3  Virtual Studio Code

2.2  关键技术介绍

2.2.1  数据分析

2.2.2  网络爬虫技术

2.2.3  Hadoop生态系统

2.2.4  Spark计算引擎

2.2.5  MySQL 数据库

2.2.6  协同过滤算法

2.2.7  Maven 整合

2.2.8  前后端分离技术

2.3  本章小结

第3章  系统分析

3.1  系统可行性分析

3.1.1  技术可行性分析

3.1.2  经济可行性分析

3.1.3  操作可行性分析

3.2  功能需求分析

3.2.1  数据可视化大屏

3.2.2  用户用例分析

3.2.2  管理员用例分析

3.3  性能需求分析

3.3.1  响应时间

3.3.2  可伸缩性

3.3.3  可靠性

3.4  本章小结

第4章  系统设计

4.1  系统架构设计

4.1.1  数据采集模块

4.1.2  数据处理模块

4.1.3  推荐算法模块

4.1.4  用户交互模块

4.2  功能模块设计

4.3  数据仓库设计

4.3.1  数据仓库分层设计

4.3.2  数据仓库维度设计

4.4  数据库设计

4.4.1  E-R图设计

4.4.2  逻辑结构设计

4.4.3  物理结构设计

4.5  本章小结

第5章  系统实现

5.1  用户功能的实现

5.1.1  用户注册模块的实现

5.1.2  用户登录模块的实现

5.1.3  智能推荐模块模块

5.1.4  课程查询模块

5.1.5  课程评论模块

5.1.6  订单管理模块

5.1.7  支付充值模块(购物车模块)

5.1.8  预测功能

5.2  数据采集以及可视化大屏的实现

5.2.1  数据采集模块

5.2.2  数据可视化大屏

5.2.3  决策建议

5.3  系统管理员功能的实现

5.3.1  用户管理模块

5.3.2  个人中心模块

5.3.3  系统权限模块

5.3.4  系统日志模块

5.3.5  评论管理

5.3.6  章节管理

5.4  本章小结

第6章  系统测试

6.1  系统功能测试

6.2  系统可用性测试

6.3  维护测试

6.4  性能测试

6.5  测试结果分析

结论

致谢

参考文献

  1. 绪论

1.1  研究背景及意义

21世纪以来,信息技术不断发展,在线教育平台逐步兴起,为学生提供了宝贵的课程资源,打破了传统线下授课在时空上的局限性。然而这些在线教育平台含有了大量的学习数据,包括学习行为、学习习惯、知识点掌握情况等[1]。这些海量的学习数据蕴含着宝贵的教育信息,然而传统的在线教育平台由于数据处理和分析能力的不足和数据安全性的问题,在数据的采集、存储、处理和分析方面具有一定的挑战性[2]。因为对于在线教育平台而言,海量的用户行为数据、课程数据、学习数据等需要被高效地处理和分析,而传统的在线教育平台在处理数据时,往往面临着数据量大、处理速度慢、分析结果不准确等问题。

而在信息爆炸的时代,就在线教育而言,面临着海量的数据信息,人们往往会有这样的困惑,就是如何快速的从海量数据中获取真正符合个人需要的信息。另外,学生对于课程的选择和学习方向的确定也需要一定的参考,需要一个可以分析海量数据的课程推荐系统来满足个性化需求[3]。基于Hadoop和Spark的课程推荐系统,能够有效地解决这些问题,为在线教育的发展提供强大的技术支持。

该课程推荐系统的设计与实现以及可视化大屏的展示,可以有效地帮助老师和学生分析学习数据,了解学生的学习状态和学习习惯,及时调整教学策略,提高教学效果[4]。此外,对于卖家来说,该课程推荐系统的设计与实现以及可视化大屏也可以帮助他们更好地了解用户行为和需求,优化平台服务,提升用户体验。因此,该系统的设计与实现对在线教育的发展与完善和教学质量的提高有很大的促进作用。

1.2  国内外研究现状

1.2.1   国内研究现状

目前在国内,一些研究者已经尝试利用Hadoop和Spark等大数据技术来构建课程推荐系统。通过利用Hadoop和Spark在计算能力和分布式处理方面上的优势,对网络上的海量的课程数据进行预处理和分析,从而提高系统的推荐准确性和效率。除此之外,一些研究者还尝试结合爬虫技术从互联网上收集与课程相关的数据,并利用大数据技术对这些数据进行清洗、筛选和处理,为推荐系统提供更准确和全面的数据支持[5]。有研究者在基于Hadoop和Spark平台完成管理工具的伸缩和扩展上,使用了Apache Atlas元素管理工具,实现了元素管理。通过搭建集群的方式实现主机与主机之间的交互。

另外,国内一些研究者还开始关注将大数据可视化的研究和应用于课程推荐系统中。数据可视化在让用户更直观地理解和使用推荐系统方面起到了至关重要的作用。一些研究者已经使用图表和动画效果等可视化方式,将推荐系统的结果直观地呈现给用户,并通过交互式的界面让用户更好地参与到推荐过程中。

综上所述,国内的研究者已经开始关注利用Hadoop和Spark等大数据技术搭建课程推荐系统,并结合爬虫技术和数据可视化来提高推荐系统的准确性和用户体验。这些研究在推动大数据技术在课程推荐领域的应用方面具有重要意义,为今后的研究和应用提供了有益的借鉴和参考。

1.2.2   国外研究现状

在数据可视化领域,国外处于领先地位,已经提出了许多成熟的慕课数据可视化解决方案,包括基于Echarts、D3.js等技术的可视化平台。这些平台能够对在线教育平台数据进行多维度、多角度的展示和分析,为教育管理者和教师提供了强大的决策支持。在课程推荐系统方面,国外的研究较为深入,涉及到的技术更加先进和成熟。例如,基于大数据的推荐算法、基于用户行为分析的推荐系统等已经取得了一些成功的案例。在实际应用中,这些系统往往能够更好地满足用户的需求,并且具有更强的稳定性和可扩展性。

就大数据技术而言,美国、欧洲、日本等发达国家取得了显著成就,并引发了经济社会的深刻变革。美国在大数据技术的研究与应用方面居于全球领先地位。美国政府已经认识到大数据技术的重要性,并在政策层面积极推动数据开放共享、数据安全与隐私保护等方面的工作,在企业层面如谷歌、微软、亚马逊等也取得了重要突破。尽并将这些技术广泛应用于医疗、金融、教育、交通等领域,极大地推动了相关行业的发展。尽管大数据技术在全球范围内取得了显著成果,并为经济社会发展带来了深刻变革,但各国在发展这些技术的过程中,仍然面临数据安全与隐私保护、人才培养、技术标准制定等挑战。未来,各国需要进一步加强合作,共同推动大数据技术的创新与发展,以期为全球经济增长和人类福祉作出更大的贡献。未来,各国需要进一步加强合作,共同推动大数据技术的创新与发展,以期为全球经济增长和人类福祉作出更大的贡献。

1.3  论文组织结构

第 1 章是绪论。本章主要讲了大数据技术和在线教育平台的发展状况,运用大数据技术,为解决在线教育平台由于数据量多而杂而导致的分宝贵数据效率低的问题,从而使大数据技术在教育领域得到更高的应用价值。

第2章主要介绍了系统中所涉及的开发工具和相关技术。如运用Python爬虫对课程数据进行采集,使用Hadoop进行数据存储与清洗,应用Spark的机器学习库MLlib来实现推荐功能,并利用Echarts.js设计可视化大屏。采用Vue.js搭建前端界面,采用Spring Boot搭建后端框架,使用VS Code、IDEA等作为主要开发工具。

第3章是系统分析本章对系统的需求进行以下三个方面的分析:即系统可行性分析、功能需求分析、性能需求分析,并对这三个方面的需求进行具体分析。

第4章是系统设计。本章的主要内容是设计系统的方法,包括以下三个方面。第一,系统整体结构。第二,设计各模块的实现逻辑;第三,设计说明系统的数据库。

第5章是系统实现。本章是通过运用先前规划的系统设计,结合开发工具和相关技术,构建 各功能模块,展示出相应的实现界面效果。

第6章是系统测试。本章是对系统整体性能调试,确保各功能模块正常运,并对系统进行全面测试,以验证系统运行效果。

1.4  本章小结

本章主要分析了该系统设计的背景和意义,说明了在国内外,大数据技术和推荐系统的研究现状,大致叙述了本论文的组织结构。

  1. 主要开发工具及关键技术介绍

2.1  主要开发工具介绍

2.1.1   WebStorm

WebStorm是JetBrains旗下与IntelliJIDEA同源的JavaScript集成开发环境(简称IDE)。继承了IntelliJidea的部分强大的JS特性。WebStorm支持多种前端框架,如React、Angular、Vue等,以其丰富代码编辑调试重构版本控制功能,使之成为开发者最为偏爱前端开发工具之一

2.1.2   IntelliJ IDEA 

IntelliJ IDEA,全称Intelligent Java Integrated Development Environment,即智能化的Java集成开发坏境。IntelliJ IDEA开发于JetBrains公司,在软件开发中,这款Java IDE在智能代码助手、代码自动提示、重构、JavaEE支持、版本控制工具等方面功能丰富,被广泛认可为当前流行且功能强大的Java IDE之一,为开发人员提供了高效便捷的编码、调试和部署环境。

2.1.3   Virtual Studio Code

Visual Studio Code,简称为 VS Code,是一款由微软开发的轻量级、跨平台集成开发环境其功能涵盖了多种编程语言,包括JavaScript、TypeScript、Python、C++等,并提供了各种插件和工具,以简化开发过程。VS Code拥有强大的编辑功能智能代码提示以及直观调试体验,这些特性有助于提高开发者的工作效率和代码质量

2.2  关键技术介绍

2.2.1  数据分析

数据分析模块负责系统数据的统计、分析和可视化,为系统的运营和决策提供数据支持[6]。在设计上,我们采用了基于Hadoop和Spark的大数据分析技术,利用Spark的图计算库GraphX进行用户行为图的分析和挖掘,为系统的运营和管理提供了丰富的数据分析功能。数据分析模块还采用了数据可视化技术,通过数据报表和图表展示,直观展现系统的运营和用户行为数据,为决策提供了可靠的数据依据。

2.2.2  网络爬虫技术

网络爬虫是自动信息抓取过程,需要依赖于事先设定的规则。通过分析网页自动获取网页信息,与手动查找网页数据相比,自动抓取无疑更为便利。本文使用 Python 的 Requests 库和 Beautifulsoup 库去解析网站,获取数据[7]。当网络爬虫开始抓取网页时,可能会引发网站的反爬机制,导致操作失败。因此,在开发爬虫程序时,需要考虑如何应对反爬机制,这将增加额外的工作量。并且,合法合规是网络爬虫必须要遵守的准则,不能随意侵犯网站信息。

2.2.3  Hadoop生态系统

Hadoop生态系统是一个由Apache Hadoop项目发展而来的大数据处理平台,它包含了许多有关大数据处理的组件和工具,用于构建和管理大规模数据处理应用程序。Hadoop生态系统包括了Hadoop分布式文件系统(HDFS)、Hadoop YARN、Hadoop MapReduce和一系列其他核心组件[8],如HBase、Hive、Oozie、Flume、Zookeeper、Sqoop、Mahout等。这些组件和工具相互配合,为用户提供全面的大数据解决方案,助力企业有效地处理和分析海量数据,以获得更多商业洞察和价值。Hadoop生态系统的大体框架如图2.1所 示。

核心算法代码分享如下:

package com.bigdata.storm.kafka.util;import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;/*** @program: storm-kafka-api-demo* @description: redis工具类* @author: 小毕* @company: 清华大学深圳研究生院* @create: 2019-08-22 17:23*/
public class JedisUtil {/*redis连接池*/private static JedisPool pool;/***@Description: 返回redis连接池*@Param: *@return: *@Author: 小毕*@date: 2019/8/22 0022*/public static JedisPool getPool(){if(pool==null){//创建jedis连接池配置JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();//最大连接数jedisPoolConfig.setMaxTotal(20);//最大空闲连接jedisPoolConfig.setMaxIdle(5);pool=new JedisPool(jedisPoolConfig,"node03.hadoop.com",6379,3000);}return pool;}public static Jedis getConnection(){return getPool().getResource();}/*    public static void main(String[] args) {//System.out.println(getPool());//System.out.println(getConnection().set("hello","world"));}*/}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/337389.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法(十一)贪婪算法

文章目录 算法简介算法概念算法举例 经典问题 -背包问题 算法简介 算法概念 贪婪算法(Greedy)是一种在每一步都采取当前状态下最好的或者最优的选择,从而希望导致结果也是全局最好或者最优的算法。贪婪算法是当下局部的最优判断&#xff0c…

【spring】Spring Boot3.3.0发布啦

spring最新版本 springboot官网:Spring Boot :: Spring Boot Spring Boot 3.3 发行说明:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.3-Release-Notes 开发环境的要求对比表 Spring BootJDKSpringMavenGradle3.3.017 ~ 226.1…

WalleWeb简化你的DevOps部署流程

walle-web:简化部署流程,提升开发效率,Walle Web让DevOps触手可及 - 精选真开源,释放新价值。 概览 Walle Web是一个功能强大且免费开源的DevOps平台,旨在简化和自动化代码部署流程。它支持多种编程语言,包…

Qt-qrencode生成二维码

Qt-qrencode开发-生成二维码📀 文章目录 Qt-qrencode开发-生成二维码📀[toc]1、概述📸2、实现效果💽3、编译qrencode🔍4、在QT中引入编译为静态库的QRencode5、在Qt中直接使用QRencode源码6、在Qt中使用QRencode生成二…

004 仿muduo实现高性能服务器组件_Buffer模块与Socket模块的实现

​🌈个人主页:Fan_558 🔥 系列专栏:仿muduo 🌹关注我💪🏻带你学更多知识 文章目录 前言Buffer模块Socket模块 小结 前言 这章将会向你介绍仿muduo高性能服务器组件的buffer模块与socket模块的实…

每日一题——Python实现PAT甲级1041 Be Unique(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码点评 时间复杂度分析 空间复杂度分析 总结 我要更强 方法1&#x…

写大型C工程makefile构建~

正文 最开始学习linux应用开发编写的时候,估计大部分伙伴们都是在一个目录里面编译整个工程,主要是linux通常没有非常合适的集成开发环境。 以前单目录的方式实在太过捡漏,在linux环境中进行C代码工程开发很多时候需要编写一个相对比较通用的…

业务实战————Uibot6.0 .1多页面商品信息抓取RPA机器人

前言 【案例描述】 鲜果记水果店计划在淘宝电商平台上开设一家新店,小微是该企业运营部分的运营专员,主要负责公司商品上架和管理的工作。 公司计划在开店的新品促销活动中增加水果品类红富士苹果。小微需在商品上架前了解目前平台中销量前列的红富士苹…

预编码算法(个人总结)

引言 预编码算法是现代无线通信系统中的关键技术,特别是在多输入多输出(MIMO)系统中。它们通过在发送端对信号进行处理,减少干扰并提高信道容量。这种技术广泛应用于5G、Wi-Fi和卫星通信系统中。本教程将详细介绍预编码算法的背景…

【技术实操】银河高级服务器操作系统实例分享,数据库日志文件属主不对问题分析

1. 问题现象描述 2023 年 06 月 30 日在迁移数据库过程中,遇到数据库 crash 的缺陷,原因如下:在数据库启动时候生成的一组临时文件中,有 owner 为 root 的文件, 文件权限默认为 640, 当数据库需要使用的时…

基于VGG16使用图像特征进行迁移学习的时装推荐系统

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…

mac电脑鼠标键盘共享软件:ShareMouse for Mac 激活版

ShareMouse 是一款跨平台的键盘和鼠标共享软件,它允许用户在多台计算机之间共享同一组键盘和鼠标,实现无缝的操作和控制。该软件适用于 Windows 和 macOS 系统,并且支持多种连接方式,包括局域网连接和无线连接。 使用 ShareMouse&…

Blueprints - Collision Presets相关

一些以前的学习笔记归档; 在Static Mesh或SkeletalMesh等的属性中,都有Collision Presets: 其中Oject Type只是一个枚举参数,代表设置该Actor为什么类型,Collision Responses代表该Actor对各种类型的Actor有什么反应&a…

HQChart使用教程100-uniapp如何在vue3运行微信小程序

HQChart使用教程100-uniapp如何在vue3运行微信小程序 症状原因分析解决思路解决步骤1. 修改vender.js2. 修改HQChartControl.js 完整实例HQChart代码地址 症状 HQChart插件在uniappvue3的项目编译成小程序以后, 运行会报错,见下图。 原因分析 查了下…

解决docker容器: bash: ping: command not found, 并制作镜像

一. 出现原因 从 dockerhub 拉下来的镜像都是最轻量级的, 不会安装各种工具, 所以使用 ping, vim 等命令, 会出现 command not found 二. 解决方式 2.1 安装工具包 进入到一个正在运行的容器内部, 执行命令: apt-get update 之后会发现, 容器正在更新软件包, 不过最终会由…

apache大数据各组件部署搭建(超级详细)

apache大数据数仓各组件部署搭建 第一章 环境准备 1. 机器规划 准备3台服务器用于集群部署,系统建议CentOS7+,2核8G内存 172.19.195.228 hadoop101 172.19.195.229 hadoop102 172.19.195.230 hadoop103 [root@hadoop101 ~]# cat /etc/redhat-release CentOS Linux rele…

aws emr启动standalone的flink集群

关键组件 Client,代码由客户端获取并做转换,之后提交给JobMangerJobManager,对作业进行中央调度管理,获取到要执行的作业后,会进一步处理转换,然后分发任务给众多的TaskManager。TaskManager,数…

【设计模式】创建型-建造者模式

前言 在面向对象的软件开发中,构建复杂对象时经常会遇到许多挑战。一种常见的解决方案是使用设计模式,其中建造者模式是一个强大而灵活的选择。本文将深入探讨建造者模式的原理、结构、优点以及如何在实际项目中应用它。 一、复杂的对象 public class…

vue3学习使用笔记

1.学习参考资料 vue3菜鸟教程:https://www.runoob.com/vue3/vue3-tutorial.html 官方网站:https://cn.vuejs.org/ 中文文档: https://cn.vuejs.org/guide/introduction.html Webpack 入门教程:https://www.runoob.com/w3cnote/webpack-tutor…

手机离线翻译哪个好?断网翻译也能超丝滑

有时在异国他乡,面对语言不通的窘境,即便是简单的对话也变得异常困难,真是挑战满满! 然而,能离线翻译的软件让语言障碍不再是问题,不必依赖网络也能轻松进行翻译啦~ 只需下载所需的语言包,选择…