💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目
大数据音乐推荐系统介绍
本系统《基于大数据的音乐推荐系统》以Hadoop+Spark为核心,通过HDFS集中存储百万级用户播放、评分与标签数据,利用Spark SQL与Pandas进行高效清洗与特征提取,再以协同过滤与内容模型在Spark引擎中离线训练推荐结果;后端提供Python Django与Java Spring Boot双版本REST接口,统一向前端Vue+ElementUI+Echarts的Dashboard、用户信息、音乐信息、音乐交流、音乐资讯、轮播图管理等模块输出JSON数据,实现实时榜单、个性化推荐、社区互动及后台系统管理,整套流程覆盖从数据上传、模型更新到结果可视化的闭环,为大四计算机毕业设计提供可直接运行、模块清晰、技术栈完整的大数据级音乐推荐范例。
大数据音乐推荐系统演示视频
大数据音乐推荐系统演示图片
大数据音乐推荐系统代码展示
spark = SparkSession.builder.appName("MusicALS").getOrCreate()
plays = spark.read.parquet("hdfs://namenode:9000/music/plays") \
.select("user_id","music_id","play_time") \
.withColumn("rating", when(col("play_time")>180,5).otherwise(1))
als = ALS(maxIter=10, regParam=0.01, userCol="user_id", itemCol="music_id", ratingCol="rating")
model = als.fit(plays)
rec = model.recommendForAllUsers(20).select("user_id", explode("recommendations").alias("rec"))
rec = rec.select("user_id", col("rec.music_id").alias("music_id"), col("rec.rating").alias("score"))
rec.write.format("jdbc").option("url","jdbc:mysql://localhost:3306/music") \
.option("driver","com.mysql.cj.jdbc.Driver") \
.option("dbtable","user_recommend").option("user","root").option("password","123456") \
.mode("append").save()
# 2. 实时Top-N热门榜单:Spark Streaming每30秒聚合 → 更新MySQL chart表
ssc = StreamingContext(spark.sparkContext, 30)
lines = ssc.socketTextStream("localhost", 9999)
plays = lines.map(lambda x: json.loads(x)).map(lambda p: (p["music_id"],1))
counts = plays.reduceByKeyAndWindow(lambda a,b:a+b, lambda a,b:a-b, 300, 30)
def saveTop(rdd):
if not rdd.isEmpty():
top = rdd.sortBy(lambda x:x[1],ascending=False).take(100)
conn = pymysql.connect(host="localhost",user="root",password="123456",db="music")
cur = conn.cursor()
cur.execute("delete from chart")
for m_id,cnt in top:
cur.execute("insert into chart(music_id,play_count) values(%s,%s)",(m_id,cnt))
conn.commit(); cur.close(); conn.close()
counts.foreachRDD(saveTop)
ssc.start(); ssc.awaitTermination()
# 3. 用户个性化推荐接口:Django视图函数,查询ALS结果+补全热门歌
@api_view(['GET'])
def personal(request):
uid = request.GET.get("user_id")
conn = pymysql.connect(host="localhost",user="root",password="123456",db="music")
cur = conn.cursor(pymysql.cursors.DictCursor)
cur.execute("select music_id,score from user_recommend where user_id=%s order by score desc limit 20", (uid,))
als = cur.fetchall()
if len(als) < 20:
need = 20 - len(als)
cur.execute("select music_id from chart order by play_count desc limit %s", (need,))
hot = cur.fetchall()
als.extend(hot)
mids = [str(r["music_id"]) for r in als]
sql = "select id,title,artist,album,cover from music where id in ({})".format(",".join(mids))
cur.execute(sql)
tracks = cur.fetchall()
cur.close(); conn.close()
return Response(tracks)
大数据音乐推荐系统文档展示
💖💖作者:计算机毕业设计小途
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目