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

news2024/11/18 1:33:36

本科毕业设计(论文)

题目基于 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.coloradmin.cn/o/1721275.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

11Linux学习笔记

Linux 实操篇 目录 文章目录 Linux 实操篇1.rtm包(软件)1.1 基本命令1.2 基本格式1.3安装rtm包1.4卸载rtm包 2.apt包2.1 基本命令结构2.2 常用选项2.3常用命令 1.rtm包(软件) 1.1 基本命令 1.2 基本格式 1.3安装rtm包 1.4卸载r…

Golang | Leetcode Golang题解之第123题买卖股票的最佳时机III

题目&#xff1a; 题解&#xff1a; func maxProfit(prices []int) int {buy1, sell1 : -prices[0], 0buy2, sell2 : -prices[0], 0for i : 1; i < len(prices); i {buy1 max(buy1, -prices[i])sell1 max(sell1, buy1prices[i])buy2 max(buy2, sell1-prices[i])sell2 m…

如何让数据标注

1.用Anacoda创建一个新的虚拟环境 2.进入虚拟环境 conda activate stu_data&#xff08;就是刚才创建的虚拟变量的名称&#xff09; 3.在此环境中安装labelimg pip install labelimg 4.进入labelimg 直接输入 labelimg 快捷键&#xff1a;D&#xff1a;下一个图片 A&#xff1a…

深度学习设计模式之装饰器模式

文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言 装饰器模式属于结构型模式&#xff0c;又叫包装设计模式&#xff0c;动态的将责任添加到对象上。 一、介绍 装饰器模式又叫包装设计模式&#xff0c;为现有的类的一个…

四川音盛佳云电子商务有限公司引领抖音电商新风潮

在数字化浪潮席卷全球的今天&#xff0c;电商行业已成为推动经济发展的重要力量。作为这一领域的佼佼者&#xff0c;四川音盛佳云电子商务有限公司凭借其在抖音电商服务领域的专业实力和独特视角&#xff0c;正引领着行业的新风潮&#xff0c;助力品牌实现快速增长和腾飞。 四…

淘宝镜像的https证书过期

错误原因&#xff1a; 淘宝镜像过期 早在 2021 年&#xff0c;淘宝就发文称&#xff0c;npm 淘宝镜像已经从 http://registry.npm.taobao.org 切换到了 http://registry.npmmirror.com。旧域名也将于 2022 年 5 月 31 日停止服务&#xff08;直到 HTTPS 证书到期才真正不能用了…

用例与系统顺序图

习题 问题 考察点 1.Use Cases 用例绘制 列出8个Use Cases, 按优先权分成三个档次, 并分别用Fully dressed、Causual和Brief方式描述 建议:用Fully dressed方式描述的Use Cases应该是项目比较核心,而且需要尽快研制的功能模块;该功能模块的内容比较充实;不要采用如登陆验…

【百度之星比赛】

新材料 直接模拟&#xff1a;因为要考虑上次出现的位置&#xff0c;所以使用map映射最好&#xff0c;如果没有出现过就建立新映射&#xff0c;如果出现过但是已经反应过就跳过&#xff0c;如果出现过但是不足以反应&#xff0c;就建立新映射&#xff0c;如果能反应就反应&#…

攻防实战 | 邮件高级威胁检测与自动化响应

历经三个月的时间&#xff0c;年度重磅直播节目Fortinet 2024年度“Demo季”近日终于迎来了备受瞩目的压轴大戏——Demo Day第三期&#xff0c;主题为《新邮件安全下的高级威胁检测与自动化响应》。继成功举办了前两期《企业网络中的多源威胁情报自动化整合与集成》和《应急响应…

20.Redis之缓存

1.什么是缓存&#xff1f; Redis 最主要的用途,三个方面:1.存储数据(内存数据库)2.缓存 【redis 最常用的场景】3.消息队列【很少见】 缓存 (cache) 是计算机中的⼀个经典的概念. 在很多场景中都会涉及到. 核⼼思路就是把⼀些常⽤的数据放到触⼿可及(访问速度更快)的地⽅, ⽅…

Windows 11 Beta 22635.3646 预览版发布:中国大陆地区新增“微软电脑管家”应用

微软今天面向 Beta 频道的 Windows Insider 项目成员&#xff0c;发布了适用于 Windows 11 的 KB5037858 更新&#xff0c;用户安装后版本号升至 Build 22635.3646&#xff0c;该版本主要为中国大陆设备新增“微软电脑管家”应用。 IT之家 5 月 24 日消息&#xff0c;微软今天…

从零自制docker-15-【实现 mydocker run -d 支持后台运行容器】

文章目录 实现目的莫名奇妙的问题对之前upper层出现root补充对run某些命令出现找不到文件或目录的原因代码效果 实现目的 docker run -d时容器在后台运行&#xff0c;而不会进入命令行交互形式 首先是需要添加-d选项然后设置当添加-d选项时候主进程不会等待子进程&#xff0c…

ollama入门系列教程简介与目录

教程简介 Ollama教程系列是为那些希望深入了解并掌握Ollama框架的开发者设计的。通过这一系列的教程,用户将学习如何从基础设置到高级功能的各个方面,有效地在Ollama平台上开发和部署大型语言模型。本系列包括如何将模型导入Ollama框架、利用与OpenAI兼容的API、以及如何使用…

关于ida如何进行远程linux调试(详解)

首先我们需要安装工具软件VMware虚拟机和finalshell&#xff0c;并在虚拟机中安装centos 7系统&#xff0c;还要将finalshell连接到该系统中&#xff0c;具体操作可以去b站搜黑马Linux学习&#xff0c;学完该课程的p5&#xff0c;p6&#xff0c;p8即可&#xff0c;我接下来讲的…

CentOS7.9部署安装OpenGauss 5.0.2企业版

1、更新系统: yum update -y 2、更改主机名&#xff1a; hostnamectl set-hostname opendb01 3、关闭透明页&#xff1a; echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag# 加入开机自启动 echo …

[数据集][目标检测][数据集][目标检测]智能手机检测数据集VOC格式5447张

数据集格式&#xff1a;Pascal VOC格式(不包含分割的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;5447 标注数量(xml文件个数)&#xff1a;5447 标注类别数&#xff1a;1 标注类别名称:["phone"] 每个类别标注的框数&#xff…

容器技术基础理论与常用命令:必知必会,效率翻倍!

如何利用容器技术提升你的工作效率&#xff1f;掌握基础理论和常用命令是必不可少的&#xff0c;本文将为你全面介绍容器技术&#xff0c;并教你必知必会的技能&#xff0c;让你工作、学习效率翻倍&#xff0c;对于网络安全工作者也是必不可少的技能&#xff01; 0. 引言 学习…

大型制造业集团IT信息化总体规划方案(65页PPT)

方案介绍&#xff1a; 本大型制造业集团IT信息化总体规划方案旨在通过构建先进、高效、稳定的IT信息化系统&#xff0c;支撑集团各业务领域的运营和管理需求&#xff0c;促进集团整体运营效率和竞争力的提升。通过实施本项目&#xff0c;集团将能够更好地应对市场变化和客户需…

python编程:创建 SQLite 数据库和表的图形用户界面应用程序

在本文中&#xff0c;我将介绍如何使用 wxPython 模块创建一个图形用户界面&#xff08;GUI&#xff09;应用程序&#xff0c;该应用程序允许用户选择 SQLite 数据库的存放路径、数据库名称、表名称&#xff0c;并动态添加字段及其类型。以下是具体的实现步骤和代码示例。 C:\p…