💖💖作者:计算机编程小央姐 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜
💕💕文末获取源码
@TOC
【Hadoop+HDFS+hive+Spark毕设】基于大数据的健康与生活方式数据可视化分析系统-系统功能介绍
本《基于大数据的健康与生活方式数据可视化分析系统》是一个集数据存储、处理、分析与可视化于一体的综合性大数据毕业设计项目。系统底层架构坚实,采用Hadoop的HDFS作为分布式文件系统,为海量健康数据的可靠存储提供了基础保障。在数据处理与分析层面,系统以Apache Spark为核心计算引擎,充分利用其内存计算的高效特性,对数据进行快速的清洗、转换与深度挖掘。我们通过Spark SQL对结构化数据执行复杂的多维查询与聚合分析,同时利用Hive进行数据仓库管理,使得数据查询更为便捷。系统的核心功能不仅限于描述性统计分析,更引入了机器学习算法。我们基于用户的行为与特征数据,通过Spark MLlib库中的协同过滤算法(ALS)构建推荐模型,旨在为用户个性化推荐可能感兴趣的健康资讯或生活方式建议,为系统增添了智能化与个性化的亮点。在功能实现上,系统涵盖了对印度健康生活方式数据集的五大维度分析:从居民基础画像、城乡生活差异,到工作压力与风险行为的关联、不同年龄段的生活习惯演变,最终形成一个综合性的健康生活方式评估模型。所有分析结果均通过前后端分离的架构呈现,后端采用SpringBoot(或Django)提供稳定的API接口,前端则利用Vue、ElementUI以及Echarts图表库,将复杂的数据以直观、动态、交互性强的可视化图表(如柱状图、饼图、关系图等)清晰地展示给用户,实现了从原始数据到业务洞察的完整闭环。
【Hadoop+HDFS+hive+Spark毕设】基于大数据的健康与生活方式数据可视化分析系统-系统技术介绍
大数据框架:Hadoop+Spark(本次没用Hive,支持定制) 开发语言:Python+Java(两个版本都支持) 后端框架:Django+Spring Boot(Spring+SpringMVC+Mybatis)(两个版本都支持) 前端:Vue+ElementUI+Echarts+HTML+CSS+JavaScript+jQuery 详细技术点:Hadoop、HDFS、Spark、Spark SQL、Pandas、NumPy 数据库:MySQL
【Hadoop+HDFS+hive+Spark毕设】基于大数据的健康与生活方式数据可视化分析系统-系统背景意义
现在这个时代,大家对自己的健康越来越上心了,这已经成了一个普遍的社会现象。与此同时,我们每天的生活、工作,甚至在网上查个资料,都在不知不觉中产生大量的数据。这些数据就像散落的拼图碎片,单独看可能没什么,但合起来或许就能画出一幅关于我们生活方式和健康状况的全景图。问题在于,这些数据量实在是太大了,而且格式五花八门,靠传统的软件或者单台电脑根本处理不过来。这就让“大数据”技术有了用武之地。正好我们学习了像Hadoop和Spark这些专门处理海量数据的工具,就想着能不能用学到的东西来做点有意思的尝试。我们找到了一份关于印度居民健康与生活方式的公开数据集,觉得它特别有代表性,里面包含了年龄、城乡、饮食、工作压力、传统医学偏好等各种维度的信息,能很好地反映一个复杂社会背景下的健康图景。所以,这个课题的想法就这么诞生了:尝试用大数据的技术手段,去深入挖掘这份数据,看看能不能从一堆看似杂乱的数字里,找出一些关于健康和生活方式之间有价值的、隐藏的关联。说实话,这个项目毕竟只是一个毕业设计,要说它能产生多大的社会变革或者商业价值,那肯定是夸张了。它最大的意义,其实还是在于我们学生自身。这个项目给了我们一个绝佳的机会,把课堂上学到的Hadoop、Spark这些听起来很“高大上”的理论知识,真正地用在一个具体、完整的项目里。从最开始的数据存储(HDFS),到数据处理(Spark),再到数据查询(Hive/Spark SQL),最后到数据展示(Echarts),整个大数据处理的流程我们都能亲手走一遍,这种实践经验是看书看再多遍也得不到的。另一方面,这个系统也算是一个小小的技术探索原型。它展示了如何将大数据技术应用到公共健康这个领域,虽然我们的分析很简单,但它提供了一种思路:原来可以通过分析数据,去发现比如“城市居民的工作压力普遍比农村高”或者“某个年龄段的人群更倾向于选择传统医疗”这样的群体性趋势。这对于那些真正做公共健康研究的机构来说,或许能提供一些数据分析上的方法论参考。总的来说,这个项目的意义更多体现在技术整合与实践能力的锻炼上,它让我们学会了如何将后端、前端和大数据技术捏合在一起,做出一个能看、能用的系统,也为我们以后解决类似的数据分析问题,打下了一点小小的基础。
【Hadoop+HDFS+hive+Spark毕设】基于大数据的健康与生活方式数据可视化分析系统-系统演示视频
【Hadoop+HDFS+hive+Spark毕设】基于大数据的健康与生活方式数据可视化分析系统-系统演示图片
【Hadoop+HDFS+hive+Spark毕设】基于大数据的健康与生活方式数据可视化分析系统-系统部分代码
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, when, count, lit
from pyspark.ml.recommendation import ALS
from pyspark.sql import Window
from pyspark.sql.functions import percent_rank, format_number
# -------------------- 代码正式开始,上方为必要的引用 --------------------
# 初始化SparkSession,这是所有Spark程序的入口
spark = SparkSession.builder.appName("HealthAnalyticsApp").config("spark.some.config.option", "some-value").getOrCreate()
# 假设df是已经加载了数据源(如CSV或Parquet)的DataFrame
# df = spark.read.csv("path/to/your/data.csv", header=True, inferSchema=True)
def analyze_stress_and_smoking(df):
"""
核心功能一:分析工作压力与吸烟行为的关联性
业务处理:按工作压力等级分组,统计各压力等级下吸烟与不吸烟的人数及比例。
这能揭示高压力人群是否更倾向于吸烟这一行为模式。
"""
print("--- 正在执行核心功能一:工作压力与吸烟行为关联分析 ---")
analysis_df = df.groupBy("Work Stress", "Smoking Status").agg(count("*").alias("count"))
window_spec = Window.partitionBy("Work Stress")
result_df = analysis_df.withColumn("total_in_group", sum("count").over(window_spec))
result_df = result_df.withColumn("percentage", format_number((col("count") / col("total_in_group")) * 100, 2))
result_df = result_df.select(
col("Work Stress").alias("work_stress"),
col("Smoking Status").alias("smoking_status"),
col("count"),
col("percentage")
)
result_df.show(truncate=False)
# 在实际项目中,这里会将result_df转换为JSON格式返回给前端
return result_df
def calculate_health_score(df):
"""
核心功能二:计算用户健康生活方式综合得分
业务处理:基于多个健康相关行为(不吸烟、不饮酒、积极体育锻炼)为用户打分。
每个健康行为计1分,不健康行为计0分,最后累加得出总分。
这个分数可以直观地量化一个人的生活方式健康程度。
"""
print("--- 正在执行核心功能二:健康生活方式综合得分计算 ---")
scored_df = df.withColumn("smoking_score", when(col("Smoking Status") == "No", 1).otherwise(0))
scored_df = scored_df.withColumn("alcohol_score", when(col("Alcohol Consumption") == "No", 1).otherwise(0))
scored_df = scored_df.withColumn("activity_score",
when(col("Physical Activity") == "High", 2)
.when(col("Physical Activity") == "Moderate", 1)
.otherwise(0))
final_df = scored_df.withColumn("health_score", col("smoking_score") + col("alcohol_score") + col("activity_score"))
result_df = final_df.select(
col("User ID"), # 假设有一个用户ID列
col("health_score"),
col("smoking_score"),
col("alcohol_score"),
col("activity_score")
)
result_df.show()
# 返回带有健康分数的DataFrame,用于后续分析或展示
return result_df
def run_collaborative_filtering_recommendation(df):
"""
核心功能三:基于协同过滤算法为用户推荐生活方式
业务处理:将生活方式(如饮食类型、医疗偏好)视为“物品”,用户对其的选择视为“评分”。
利用ALS算法,根据用户间的相似性,为用户推荐他们可能喜欢但尚未选择的生活方式。
注意:这里的评分是隐式反馈,我们假设用户选择了某项即为“喜欢”,评分为1。
"""
print("--- 正在执行核心功能三:协同过滤推荐 ---")
# 1. 数据准备:需要将用户和物品(生活方式)转换为数值ID
# 创建一个模拟的用户ID列和将生活方式转换为数值
df_with_ids = df.withColumn("userId", (rand() * 1000).cast("int"))
df_with_ids = df_with_ids.withColumn("lifestyleId",
when(col("Diet Type") == "Vegetarian", 1)
.when(col("Preferred Medicine") == "Ayurveda", 2)
.when(col("Physical Activity") == "High", 3)
.otherwise(0)) # 将多种行为映射为ID
# 2. 创建评分数据集,这里的评分为隐式反馈1.0
ratings_df = df_with_ids.select(
col("userId"),
col("lifestyleId"),
lit(1.0).alias("rating") # 隐式反馈
).filter(col("lifestyleId") > 0)
(training, test) = ratings_df.randomSplit([0.8, 0.2])
# 3. 构建并训练ALS模型
als = ALS(maxIter=5, regParam=0.01, userCol="userId", itemCol="lifestyleId", ratingCol="rating",
coldStartStrategy="drop", implicitPrefs=True) # 设置为隐式反馈
model = als.fit(training)
# 4. 为所有用户生成TOP 3推荐
user_recs = model.recommendForAllUsers(3)
print("为用户推荐的生活方式ID:")
user_recs.show(truncate=False)
# 在实际应用中,会将lifestyleId转换回具体的生活方式名称再返回
return user_recs
# 假设df已经被加载
# analyze_stress_and_smoking(df)
# calculate_health_score(df)
# run_collaborative_filtering_recommendation(df)
【Hadoop+HDFS+hive+Spark毕设】基于大数据的健康与生活方式数据可视化分析系统-结语
💟💟如果大家有任何疑虑,欢迎在下方位置详细交流。