当前位置: 首页 > news >正文

基于Hadoop大数据音乐推荐系统的设计与实现

摘 要

各种主流的音乐平台都为用户提供了的大量的音乐,让他们时刻都能沉浸在音乐的海洋之中。然而,过多的音乐往往使用户眼花缭乱,很难发现他们真正所需要的。一套优秀的推荐系统,可以很好地解决这个问题,既能帮助用户找到自己喜欢的歌曲,又能提高用户对App的粘性,从而为平台方带来更多的流量和收益。
本系统的设计包括了后台管理系统、音乐推荐系统以及可视化系统。利用Python进行数据采集与离线分析,利用Hadoop的Map Reduce计算框架实现基于项目协同过滤算法,利用Django框架设计网页界面和后台管理界面。该音乐推荐系统使用了HDFS以及MySQL数据库,HDFS主要用于存储利用爬虫获取的海量的音乐数据,经过数据处理后,再通过Map Reduce计算框架进行计算,实现推荐算法后,将推荐结果保存在MySQL数据库中,以便于在前端页面展示中进行调用。

关键词:音乐推荐系统;大数据;协同过滤

管理员登录相关功能

(1)可以对音乐的信息进行查看、修改,并可以对于音乐进行增加删除操作。
(2)可以对用户的信息进行查看,但是不能查看涉及用户隐私的信息,也可以对于用户进行增加、删除操作。
在这里插入图片描述

图1系统功能模块图

数据库设计

2.1数据库设计原则
该系统采用的是MySQL数据库.在数据库的数据结构设计中,要确保数据库的实体和实体的关系紧密,在数据结构层次上不存在任何差错,避免了后期的纠错,而且要严格遵守数据库的第一范式、第二范式以及第三范式。
在数据库的设计中,使用了Navicat作为一个数据库管理工具,它可以建立多个连接,便于对各种数据库进行管理,同时也可以对特定的云数据库进行管理。
本系统所依靠的数据库是MySQL,它的前端网页显示的是依赖数据库内部的数据。所以,要对采集到的数据进行处理和提取,按照数据库的设计原理,尽量减少数据的冗余。
2.2表设计
在数据库中,需要对于表进行设计,包括用户表、音乐表、用户音乐收藏表以及音乐推荐表等。
在这里插入图片描述
E-R图设计
音乐实体是用来存储音乐信息的实体,里面记录了song_id、song_name、song_singer、song_time、song_album、song_language、song_img、song_file、song_type等信息,这些信息构成了song表的主要内容,主键为song_id。歌曲E-R图如图1所示。
在这里插入图片描述

图1歌曲E-R图
用户实体是存储用户信息的实体,其中记录了用户的user_id、user_name、user_age、user_area、user_phone、user_gender、user_password、user_email等信息,主键为user_id。用户E-R图如图2所示。
在这里插入图片描述

图2用户E-R图

通过以上歌曲、用户、管理员、收藏记录、推荐列表的五个实体设计以后,可以根据系统功能以及业务逻辑衍生出以下关系。系统ER图如下图3所示。
在这里插入图片描述

图3推荐系统E-R图

系统主页面

前端页面采用的基于python开发语言的Django框架设计的,通过运行pythonmanage.pyrunserver命令可以运行前端部分的代码,然后通过http://127.0.0.1:8000/的链接就可以进入系统的主页面,主页面展示如图所示。
在系统的主页面中,当前是以游客的身份进入的,可以进行音乐的查询以及热门音乐的查看和播放,也可以通过主页面中的用户中心来进行用户的注册和登录。
在这里插入图片描述

图4系统主页面展示

2注册登录页面
在系统的主页面中,可以通过主页面中的用户中心来进行用户的注册和登录,登录界面如图5所示。
在这里插入图片描述

图5用户登录页面展示

结论

本文设计实现的是基于Hadoop的大数据音乐推荐系统,设计之初是为了让广大音乐爱好者们有一个更好的平台来满足自己对于音乐的追求。随着人们的精神生活水平的不断提高,音乐在人们生活中的地位越来越重要。
系统的设计实现主要包含两部分:前端页面与后台系统。前端页面主要由游客登录、用户登录、管理员登录三部分组成,主要实现的功能如下:
(1)注册\登录模块:用户可以在系统主页面进行注册、登录,登录过程中若信息不符合要求则不能进入系统。
(2)音乐推荐模块:实现了在主页面中对于热门音乐的推荐,用户登录之后还可以根据用户的行为数据对其进行个性化音乐推荐功能。
(3)信息管理模块:系统管理员可以增添、修改、查看用户以及歌曲的信息。
(4)音乐收藏模块:用户可以对于自己喜欢的歌曲进行收藏,同时也可以作为数据进入推荐算法,为用户带来更优质的服务。
本项目的设计过程中使用Python进行数据爬取,爬取目标为网易云音乐网站,爬取过程中使用到了selenium爬虫和requests库,通过bs4库来解析源码。将爬取的数据存储到MySQL数据库中,使用Django框架搭建web页面,构建音乐网站,读取数据库爬取的数据进行展示。推荐算法部分采用Java语言实现基于物品的协同过滤算法,使用Map Reduce计算框架进行计算,并将数据存储到MySQL和HDFS中。
经过上述技术和算法的整合,项目开发已经取得成功,需求分析中所提及的内容都已实现,但是由于开发时间较紧,加之技术和环境的限制,系统功能并不完善,并没有达到理想的预期结果,需要通过今后不断地学习来完善和改进本系统。

参考文献

[1]刘帅,刘婵娟.音乐推荐系统综述[J].广州大学学报(自然科学版),2020,19(05):36-46+77.
[2]谭学清,何珊.音乐个性化推荐系统研究综述[J].现代图书情报技术,2014(09):22-32.
[3]陈雅茜.音乐推荐系统及相关技术研究[J].计算机工程与应用,2012,48(18):9-16+47.
[4]彭立涵.基于大数据平台的音乐推荐系统的设计与实现[D].哈尔滨理工大学,2021.
[5]黄川林,鲁艳霞.基于协同过滤和标签的混合音乐推荐算法研究[J].软件工程,2021,24(04):10-14.
[6]余明辉,张良均.《Hadoop大数据开发基础》[M].北京:人民邮电出版社,2018.2:1-144.
[7]嵩天,礼欣,黄天羽.《Python语言程序设计基础(第2版)》[M].北京:高等教育出版社,2017.2:1-309.
[8]张燕,唐振民,李燕萍.面向推荐系统的音乐特征抽取[J].计算机工程与应用,2011,47(05):130-133.
[9]黄立威,江碧涛,吕守业,刘艳博,李德毅.基于深度学习的推荐系统研究综述[J].计算机学报,2018,41(07):1619-1647.
[10]张国华,叶苗,王自然,周婷婷.大数据Hadoop框架核心技术对比与实现[J].实验室研究与探索,2021,40(02):145-148+176.
[11]华泽,叶雨航.协同过滤算法及在个性化音乐推荐中的应用[J].现代计算机,2021(22):43-46+54.[12]郝树魁.HadoopHDFS和Map Reduce架构浅析[J].邮电设计技术,2012(07):37-42.[13]王冉阳.基于Django和Python的Web开发[J].电脑编程技巧与维护,2009(02):56-58.

相关文章:

基于Hadoop大数据音乐推荐系统的设计与实现

摘 要 各种主流的音乐平台都为用户提供了的大量的音乐,让他们时刻都能沉浸在音乐的海洋之中。然而,过多的音乐往往使用户眼花缭乱,很难发现他们真正所需要的。一套优秀的推荐系统,可以很好地解决这个问题,既能帮助用户…...

【Linux】冯诺依曼体系结构

目录 一、冯诺依曼体系结构二、冯诺依曼体系结构的基本组成三、关于冯诺依曼体系结构的一些问题结尾 一、冯诺依曼体系结构 冯诺依曼体系结构,也称为普林斯顿结构,是现代计算机设计的基础框架。这一体系结构由数学家冯诺依曼在20世纪40年代提出&#xf…...

2025计算机毕设选题推荐【小程序方向】【基础功能+创新点设计】

✅博主介绍:CSDN毕设辅导博主、CSDN认证 Java领域优质创作者 ✅技术范围:主要包括Java、Vue、Python、爬虫、小程序、安卓app、大数据、机器学习等设计与开发。 ✅主要内容:免费功能设计、开题报告、任务书、功能实现、代码编写、论文编写和…...

CSS系列(3)-- 定位与文档流详解

前端技术探索系列:CSS 定位与文档流详解 📍 致读者:掌握页面布局的精髓 👋 前端开发者们, 今天我们将深入探讨 CSS 定位与文档流,这是掌握页面布局的关键所在。通过本文,你将全面理解各种定位…...

【书生大模型实战营】Linux 基础知识-L0G1000

前言:书生大模型实战营是上海人工智能实验室开展的大模型系列实践活动,提供免费算力平台,学员通过闯关式任务,可获得免费算力和存储,助力项目实践。本期是第4期,时间从十一月份开始,持续到十二月…...

小程序IOS安全区域优化:safe-area-inset-bottom

ios下边有一个小黑线,位于底部的元素会被黑线阻挡 safe-area-inset-bottom 一 用法及作用: IOS全面屏底部有小黑线,位于底部的元素会被黑线阻挡,可以使用以下样式: .model{padding-bottom: constant(safe-area-ins…...

STM32-C语言基础知识

C语言基础知识 stdint.h简介 给寄存器某个位赋值 给位6赋值为1流程:先清0,再赋值 带参数的宏定义 建议使用do {…}while(0)来构造宏定义 条件编译 条件编译后面必须跟宏语句,如#if _LED_H 指针使用常见的2大问题 1、未初始化 2、越界使…...

深度和法线纹理

屏幕后期处理效果的基本原理就是当游戏画面渲染完毕后通过获取到该画面的信息进行额外的效果处理 之前的边缘检测、高斯模糊、Bloom、运动模糊等效果都是基于获取当前屏幕图像中的像素信息进行后期处理的 如果仅仅根据像素信息来进行一些效果处理,存在以下问题&…...

21天掌握javaweb-->第11天:前端性能优化与响应式设计

前端性能优化与响应式设计 1. 前端性能优化技巧 1.1 代码分割(Code Splitting) 代码分割是一种将代码拆分成多个较小的包,并在需要时按需加载的技术,这有助于减少初始加载时间,并提高应用程序的响应速度。 实现方法…...

java+ssm+mysql校园物品租赁网

项目介绍: 使用javassmmysql开发的校园物品租赁网,系统包含管理员、用户角色,功能如下: 管理员:用户管理;物品管理(物品种类、物品信息、评论信息);订单管理&#xff1…...

C#常见错误—空对象错误

System.NullReferenceException:未将对象引用设置到对象的实例 在C#编程中,System.NullReferenceException是一个常见的运行时异常,其错误信息“未将对象引用设置到对象的实例”意味着代码试图访问一个未被初始化或已被设置为null的对象的成…...

GPT系列模型简要概述

GPT-1:(0.117B参数量,0.8B words预训练数据) 动机: 在RNN和Transformer之间,选择了后者。 和《All your need is Attention》翻译模型的Encoder-Decoder架构相比,只保留Decoder,因此去掉了Cross…...

关于睡懒觉

我们经常听到一个词:睡懒觉。 我认为,睡懒觉这个词,是错误的。 人,是需要睡眠的,睡不够,就不会醒。睡够了,自然会醒,也不想继续睡。不信你试试,睡够了,你…...

Spring Data JPA 入门

文章目录 前言、Spring Data JPA 是什么?1、背景2、优势3、Spring Data JPA 和 MyBatis-Plus 对比4、Spring Data JPA 与 JPA 的关系是什么? 一、准备1、依赖引入Spring Boot 框架依赖引入:非 Spring Boot 框架依赖引入: 2、定义实…...

操作系统用户界面

实验目的: LINUX操作系统提供了图形用户界面和命令行界面,本实验主要熟悉命令行界面,为后续的实验编程做准备。 二、实验内容: 写出每个命令的功能及格式 1、有关目录和文件操作的命令 1.1cat 功能: 1.一次显示整…...

区块链dapp 开发详解(VUE3.0)

1、安装metamask 插件。 2、使用封装的工具包: wagmi . 3、 wagmi 操作手册地址:connect | Wagmi 4、注意事项: 因为最初是react 版本,所以在VUE版的官方文档有很多地方在 import 用的是 wagmi,需要改为 wagmi/vue 。 连接成功后打印的内容如下&…...

BTC密码学原理

文章目录 比特币的密码学基础哈希函数(Hash Function)非对称加密(Asymmetric Cryptography)数字签名(Digital Signature) 工作量证明(Proof of Work)区块链技术的密码学保障区块链的…...

【NLP 9、实践 ① 五维随机向量交叉熵多分类】

目录 五维向量交叉熵多分类 规律: 实现: 1.设计模型 2.生成数据集 3.模型测试 4.模型训练 5.对训练的模型进行验证 调用模型 你的平静,是你最强的力量 —— 24.12.6 五维向量交叉熵多分类 规律: x是一个五维(索引)向量&#xff…...

Linux -文件系统的备份

本文为Ubuntu Linux操作系统- 第九弹~~ 今天接着上文的内容,讲Linux磁盘存储管理最后一部分内容~ 上期回顾:Linux 图形界面工具管理磁盘分区和文件系统 😎黑犀铠甲合体,流星枪之狂瀑扎帖,碎魔伏暴,灭于狂瀑…...

【Linux基础五】Linux开发工具—上(apt和vim)

【Linux基础五】Linux开发工具—上(apt和vim) 1.apt包管理工具2.Linux中的编辑器vim2.1命令模式2.2插入模式2.3底行模式2.4替换模式2.5视图模式2.6多线程操作2.7配置vim 1.apt包管理工具 在 Linux 系统中,软件包管理工具是用户安装、更新和管…...

力扣--LCR 134.Pow(x,n)

题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示例 2: 输入:x 2.10000, n 3 输出:9.2610…...

java抽奖系统(一)2.0

1. 项⽬介绍 1.1 背景 随着数字营销的兴起,企业越来越重视通过在线活动来吸引和留住客⼾。抽奖活动作为⼀种有效的营 销⼿段,能够显著提升⽤⼾参与度和品牌曝光率。于是我们就开发了以抽奖活动作为背景的Spring Boot项⽬,通过这个项⽬提供⼀…...

读取电视剧MP4视频的每一帧,检测出现的每一个人脸并保存

检测效果还不错,就是追踪有点难做 import cv2 import mediapipe as mp import os from collections import defaultdict# pip install msvc-runtime# 初始化OpenCV的MultiTracker # multi_tracker = cv2.MultiTracker_create() # multi_tracker = cv2.legacy.MultiTracker_cre…...

【MySQL 进阶之路】事务并发情况分析

MySQL事务并发控制分析笔记 在数据库系统中,事务并发控制至关重要,能够确保多个事务并发执行时的数据一致性、隔离性和正确性。MySQL通过不同的锁机制控制并发操作,以确保事务的隔离性。以下是对事务A和事务B并发行为的详细分析,…...

基于SSM的线上考试系统的设计与实现(计算机毕业设计)+万字说明文档

系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境: Tomcat 7.x,8.x,9.x版本均可 操作系统…...

redis击穿,穿透,雪崩以及解决方案

目录 击穿 解决方案一 解决方案二 穿透 解决方案 雪崩 解决方案 击穿 指的是单个key在缓存中查不到,去数据库查询,这样如果并发不大或者数据库数据量不大的话是没有什么问题的。 如果数据库数据量大并且是高并发的情况下那么就可能会造成数据库压…...

Flask返回中文Unicode编码(乱码)解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

EasyExcel改名为FastExce做了那些改变呢

回到:github原作者地址:https://github.com/CodePhiliaX/fastexcel 中文 |English | 什么是 FastExcel FastExcel 是由原 EasyExcel 作者创建的新项目。2023 年我已从阿里离职,近期阿里宣布停止更新 EasyExcel,作者他本人决定继…...

数据结构之初始二叉树(1)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构(Java版) 目录 树型结构 树的概念 与树的有关概念 树的表示形式 树的应用 二叉树 概念 两种特殊的…...

利用Python爬虫按图搜索淘宝商品(拍立淘)

在当今数字化时代,能够通过图片搜索商品的功能(如淘宝的“拍立淘”)为用户提供了极大的便利。本文将详细介绍如何利用Python爬虫技术实现按图搜索淘宝商品,并提供相应的代码示例。 1. 拍立淘功能简介 “拍立淘”是淘宝提供的一项…...

微信小程序中使用miniprogram-sm-crypto实现SM4加密攻略

在微信小程序开发过程中,数据安全至关重要。本文将为大家介绍如何在微信小程序中使用miniprogram-sm-crypto插件进行SM4加密,确保数据传输的安全性。 一、SM4加密简介 SM4是一种对称加密算法,由国家密码管理局发布,适用于商密领…...

基于注解的方式实现分布式锁的AOP功能

使用场景: 在分布式项目中,涉及到事务,且会操作多张表,那么涉及到并发场景,应当避免同一时间有多个用户并发操作同一份数据,例如:商品秒杀。 解决方案: 使用Around注解实现在方法…...

22. 五子棋小游戏

文章目录 概要整体架构流程技术名词解释技术细节小结 1. 概要 🔊 JackQiao 对 米粒 说:“今天咱们玩个五子棋小游戏,电脑与你轮流在一个 nn 的网格上放置棋子(X 或 O),网格由你输入的正整数n决定&#xff0…...

import是如何“占领满屏“

import是如何“占领满屏“的? 《拒绝使用模块重导(Re-export)》 模块重导是一种通用的技术。在腾讯、字节、阿里等各大厂的组件库中都有大量使用。 如:字节的arco-design组件库中的组件:github.com/arco-design… …...

传奇996_53——后端ui窗口局部刷新

描述:一个大窗口,点击某个键,弹出小窗口。 小窗口中将msg存进变量中 大窗口中判断一个参数是否为null,如果不为null,说明界面不是第一次打开,而是被刷新了。就加上小窗口的那个变量 有时小窗口中还有其他…...

云原生API网关:2024年的性能与智能化突破

API网关已经成为现代应用世界的流量控制器,并正在成为现代应用架构的重要组成部分。然而,自成立以来,他们的角色发生了巨大变化。它们正在减轻重量,变得更加可编程,并与云原生环境携手合作。 让我们来探索这一激动人心…...

专题二十五_动态规划_两个数组的 dp (含字符串数组)_算法专题详细总结

目录 动态规划_两个数组的 dp (含字符串数组) 1. 最⻓公共⼦序列(medium) 解析: 1. 状态表⽰: 2. 状态转移⽅程: 3. 初始化:​编辑 4. 填表顺序:​编辑 5. 返回值…...

day09 接口测试(5)——使用postman 完成项目实战

【没有所谓的运气🍬,只有绝对的努力✊】 目录 1、项目简介 2、技术栈 2.1 技术栈 2.2 技术架构图 3、初始化项目环境!!! 3.1 新建用例集 3.2 创建环境变量 3.3 登录模块 3.3.1 从测试用例文档提取数据 3.3.2…...

【Solidity】变量详解:类型、作用域与最佳实践

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 Solidity变量详解:类型、作用域与最佳实践引言1. 变量的类型与声明1…...

知识图谱9:知识图谱的展示

1、知识图谱的展示有很多工具 Neo4j Browser - - - - 浏览器版本 Neo4j Desktop - - - - 桌面版本 graphX - - - - 可以集成到Neo4j Desktop Neo4j 提供的 Neo4j Bloom 是用户友好的可视化工具,适合非技术用户直观地浏览图数据。Cypher 是其核心查询语言&#x…...

scss文件内引入其他scss文件报错

1、今天在编译一些老项目的时候,老是提示下面信息 2、而且有很多Sass import rules are deprecated and will be removed in Dart Sass 3.0.0.警告 3、用npm view sass versions看,其中sass的最新版本是1.82.0 4、经过测试"sass": "1.75…...

使用 ASP.NET Core HttpLoggingMiddleware 记录 http 请求/响应

我们发布了一个应用程序,该应用程序运行在一个相当隐蔽的 WAF 后面。他们向我们保证,他们的产品不会以任何方式干扰我们的应用程序。这是错误的。他们删除了我们几乎所有的“自定义”标头。为了“证明”这一点,我构建了一个中间件&#xff0c…...

沃丰科技智能客服在跨境电商独立站中的核心角色

随着全球化进程的加速和互联网技术的不断发展,跨境电商行业蓬勃兴起,为消费者提供了更广阔、更便捷的购物选择。在这样一个竞争激烈的市场环境中,优质的客户服务成为了企业脱颖而出的关键。沃丰科技智能客服凭借其先进的技术和人性化的设计理…...

基于Springboot滑雪物品在线租赁网站设计与实现(作品+论文+开题报告)

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…...

android 富文本及展示更多组件

模拟微博 #热贴 和 用户 的这种 富文本形式组件,不说了, 直接上代码 package com.tongtong.feat_watch.viewimport android.content.Context import android.graphics.Color import android.util.AttributeSet import android.view.LayoutInflater impo…...

Java-JMX 组件架构即详解

JMX架构由三个主要组件构成: ‌MBeans(Managed Beans)‌:代表可管理的资源,是JMX的核心。MBean可以是Java类或接口,提供了管理操作的接口,如获取系统信息、设置参数等。‌MBeanServer‌&#x…...

开源轻量级文件分享服务Go File本地Docker部署与远程访问

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Rust快速入门(五)

生命周期 生命周期的主要作用是避免悬垂引用。 这里我们详细说说借用检查: {let r; // ----------- a// |{ // |let x 5; // --- b |r &x; // | |} /…...

租赁系统|租赁小程序|租赁小程序成品

租赁系统是现代企业管理中不可缺少的数字化工具,它通过高效的信息整合与流程管理,为企业带来极大的便利和效益。一个完善的租赁系统开发应具备以下必备功能: 一、用户管理 用户管理模块负责系统的访问控制,包括用户注册、登录验证…...

后端-pageHelp分页查询

在pom.xml文件中先导入分页的坐标 PageResult里面有两个后端返回给前端的参数,我们最后把PageResult再封装到Result中, PageResult和Result都是工具类 EmployeeDTO中是前端页面中的模糊查询字段和分页的两个值 注意! 括号中的参数Employee…...