别人用MySQL做增删改查,大四他用Spark短视频系统直接跑通Hadoop,导师惊呆 !

59 阅读3分钟

💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜

网站实战项目

安卓/小程序实战项目

大数据实战项目

深度学习实战项目

短视频推荐系统介绍

《基于Spark的短视频推荐系统》面向大四计算机专业毕业设计需求,以Hadoop与Spark为核心大数据引擎,通过HDFS完成TB级短视频分布式存储,利用Spark SQL和Pandas/NumPy实现用户行为日志的高效清洗与向量化,结合协同过滤算法在Spark内存计算框架内快速生成个性化推荐结果;后端采用Django或Spring Boot构建RESTful接口,前端使用Vue+ElementUI+Echarts实时渲染热门视频榜单、用户反馈统计及论坛交流热度,系统内置用户账号、公告信息、轮播图与系统简介等模块,管理员可通过后台完成视频、用户、公告、论坛及系统配置的一站式管理,整套方案提供Python与Java双版本代码,从数据爬取、离线训练到在线推荐、可视化大屏形成完整闭环,帮助毕业生深入理解大数据处理流程并在有限时间内完成高质量毕设。

短视频推荐系统演示视频

演示视频

短视频推荐系统演示图片

首页.png

登录.png

热门视频.png

论坛交流.png

用户反馈.png

大屏.png

用户账号管理.png

短视频推荐系统代码展示

ratings = spark.read.parquet("hdfs://namenode:9000/video/ratings")
train, test = ratings.randomSplit([0.8, 0.2])
als = ALS(maxIter=10, regParam=0.01, userCol="user_id", itemCol="video_id", ratingCol="rating", coldStartStrategy="drop")
model = als.fit(train)
user_recs = model.recommendForAllUsers(10)
user_recs.select("user_id", explode("recommendations").alias("rec")) \
         .select("user_id", col("rec.video_id").alias("video_id"), col("rec.rating").alias("score")) \
         .write.mode("overwrite").parquet("hdfs://namenode:9000/output/rec")

# 功能2:热门视频榜单实时统计
play_log = spark.read.json("hdfs://namenode:9000/video/play_log") \
                .filter(col("action") == "play") \
                .withColumn("dt", to_date(col("ts")))
top = play_log.groupBy("dt", "video_id").agg(count("*").alias("play_cnt")) \
              .orderBy(col("dt").desc(), col("play_cnt").desc()) \
              .limit(200)
top.write.mode("overwrite").jdbc("jdbc:mysql://localhost:3306/video?useSSL=false",
                                 "hot_videos",
                                 properties={"user": "root", "password": "root"})

# 功能3:用户反馈情感分析入库
feedback = spark.read.json("hdfs://namenode:9000/video/feedback") \
                .select("user_id", "video_id", "comment")
udf_senti = udf(lambda txt: TextBlob(txt).sentiment.polarity, DoubleType())
feedback = feedback.withColumn("senti", udf_senti(col("comment"))) \
                   .withColumn("senti_label",
                               when(col("senti") > 0.1, "pos")
                               .when(col("senti") < -0.1, "neg")
                               .otherwise("neu"))
feedback.write.mode("append").jdbc("jdbc:mysql://localhost:3306/video?useSSL=false",
                                   "feedback_senti",
                                   properties={"user": "root", "password": "root"})

短视频推荐系统文档展示

文档.png 💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜

网站实战项目

安卓/小程序实战项目

大数据实战项目

深度学习实战项目