【数据分析】基于大数据的全球咖啡消费与健康影响分析系统 | 大数据毕设实战项目 选题推荐 可视化大屏 文档指导 课程设计 Hadoop SPark Python

43 阅读7分钟

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

基于大数据的全球咖啡消费与健康影响分析系统介绍

《基于大数据的全球咖啡消费与健康影响分析系统》是一个集数据处理、深度分析与前端可视化于一体的综合性平台,旨在运用现代大数据技术栈,对全球范围内的咖啡消费习惯及其与人体健康指标之间的复杂关系进行探索与呈现。本系统后端核心采用主流且稳定的SpringBoot框架,确保了服务的高效与可扩展性;前端则基于Vue.js全家桶,并结合ElementUI构建了美观易用的操作界面,同时深度整合Echarts图表库,为复杂的数据分析结果提供了直观、动态的可视化展示能力。系统的技术亮点在于其大数据处理层,它构建于Hadoop分布式文件系统(HDFS)之上,利用Apache Spark作为核心计算引擎。通过Spark SQL的强大功能,系统能够对存储在HDFS上的海量数据进行高性能的分布式查询与分析。整个数据处理流程还融入了Python中的Pandas和NumPy库,以支持灵活的数据清洗、转换和预处理。功能层面,系统不仅提供了用户管理、个人信息维护等基础模块,更包含了咖啡健康数据管理、大屏可视化、咖啡消费分析、综合健康分析、健康风险分析、生活方式分析、人群画像分析以及睡眠质量分析等八大核心功能。用户可以通过系统,从多维度探索咖啡消费模式,洞察不同人群的消费画像,并初步量化咖啡饮用与各项健康指标(如睡眠质量)之间的关联,最终所有分析结果都将汇聚于“大屏可视化”模块,以仪表盘的形式,为用户提供一站式的决策支持与数据洞察体验。

基于大数据的全球咖啡消费与健康影响分析系统演示视频

演示视频

基于大数据的全球咖啡消费与健康影响分析系统演示图片

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

基于大数据的全球咖啡消费与健康影响分析系统代码展示

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
// 模拟Service层代码
@Service
public class CoffeeAnalysisService {
    // 启动时初始化SparkSession,实际项目中会通过配置类来管理
    private static final SparkSession spark = SparkSession.builder()
            .appName("CoffeeHealthAnalysis")
            .master("local[*]") // 在本地模式下运行,实际部署时会连接到集群
            .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
            .getOrCreate();
    /**
     * 核心功能一:咖啡消费分析 (按国家/地区分析平均消费量)
     * @return 返回一个Map列表,每个Map代表一个国家的分析结果
     */
    public List<Map<String, Object>> analyzeConsumptionByCountry() {
        // 1. 从HDFS读取消费数据,实际路径应从配置读取
        String consumptionDataPath = "hdfs://namenode:9000/data/coffee_consumption.csv";
        Dataset<Row> consumptionDF = spark.read().option("header", "true").option("inferSchema", "true").csv(consumptionDataPath);
        // 2. 将数据集注册为临时视图,方便使用Spark SQL
        consumptionDF.createOrReplaceTempView("consumption_view");
        // 3. 编写SQL进行聚合分析:计算每个国家用户的平均每日咖啡杯数
        String sqlQuery = "SELECT country, AVG(cups_per_day) as avg_cups, COUNT(DISTINCT userId) as user_count " +
                          "FROM consumption_view " +
                          "WHERE country IS NOT NULL AND cups_per_day > 0 " +
                          "GROUP BY country " +
                          "ORDER BY avg_cups DESC " +
                          "LIMIT 100"; // 限制返回结果数量
        // 4. 执行SQL查询
        Dataset<Row> resultDF = spark.sql(sqlQuery);
        // 5. 将结果转换为Java List<Map>结构,方便返回给前端
        List<Map<String, Object>> resultList = resultDF.collectAsList().stream().map(row ->
                Map.of(
                        "country", row.getString(row.fieldIndex("country")),
                        "averageCups", String.format("%.2f", row.getDouble(row.fieldIndex("avg_cups"))), // 格式化结果
                        "userCount", row.getLong(row.fieldIndex("user_count"))
                )
        ).collect(Collectors.toList());
        // 实际项目中会在这里停止SparkContext,或者由容器管理生命周期
        return resultList;
    }
    /**
     * 核心功能二:人群画像分析 (按职业分析咖啡偏好)
     * @return 返回一个Map列表,每个Map代表一个职业的画像结果
     */
    public List<Map<String, Object>> analyzeUserProfileByOccupation() {
        // 1. 读取消费数据和用户数据
        String consumptionDataPath = "hdfs://namenode:9000/data/coffee_consumption.csv";
        String userDataPath = "hdfs://namenode:9000/data/user_profile.csv";
        Dataset<Row> consumptionDF = spark.read().option("header", "true").option("inferSchema", "true").csv(consumptionDataPath);
        Dataset<Row> userDF = spark.read().option("header", "true").option("inferSchema", "true").csv(userDataPath);
        // 2. 将两个数据集进行连接操作
        Dataset<Row> joinedDF = consumptionDF.join(userDF, consumptionDF.col("userId").equalTo(userDF.col("userId")), "inner");
        // 3. 注册为临时视图
        joinedDF.createOrReplaceTempView("profile_view");
        // 4. 编写SQL进行分析:按职业分组,找出每个职业最受欢迎的咖啡类型和平均消费量
        String sqlQuery = "WITH RankedCoffee AS (" +
                          "  SELECT occupation, coffee_type, COUNT(*) as type_count, " +
                          "  ROW_NUMBER() OVER(PARTITION BY occupation ORDER BY COUNT(*) DESC) as rn " +
                          "  FROM profile_view GROUP BY occupation, coffee_type" +
                          ") " +
                          "SELECT t1.occupation, t1.favorite_type, t2.avg_cups " +
                          "FROM (" +
                          "  SELECT occupation, coffee_type as favorite_type FROM RankedCoffee WHERE rn = 1" +
                          ") t1 JOIN (" +
                          "  SELECT occupation, AVG(cups_per_day) as avg_cups FROM profile_view GROUP BY occupation" +
                          ") t2 ON t1.occupation = t2.occupation " +
                          "ORDER BY t2.avg_cups DESC";
        Dataset<Row> resultDF = spark.sql(sqlQuery);
        // 5. 将结果转换为可序列化的Java对象列表
        List<Map<String, Object>> resultList = resultDF.collectAsList().stream().map(row ->
                Map.of(
                        "occupation", row.getString(row.fieldIndex("occupation")),
                        "favoriteType", row.getString(row.fieldIndex("favorite_type")),
                        "averageCups", String.format("%.2f", row.getDouble(row.fieldIndex("avg_cups")))
                )
        ).collect(Collectors.toList());
        return resultList;
    }
    /**
     * 核心功能三:健康风险分析 (筛选高消费且睡眠质量差的人群)
     * @param cupsThreshold 咖啡杯数阈值,例如 4
     * @param sleepQualityThreshold 睡眠质量阈值(假设1-10分,低于此值为差),例如 5
     * @return 返回有风险的用户ID列表
     */
    public List<Long> analyzeHealthRisk(int cupsThreshold, int sleepQualityThreshold) {
        // 1. 读取包含健康信息的数据集
        String healthDataPath = "hdfs://namenode:9000/data/health_data.csv";
        Dataset<Row> healthDF = spark.read().option("header", "true").option("inferSchema", "true").csv(healthDataPath);
        // 2. 使用DataFrame API进行链式调用,筛选出高风险人群
        // 条件:每日咖啡杯数 > cupsThreshold 并且 睡眠质量 < sleepQualityThreshold
        Dataset<Row> riskDF = healthDF.filter(healthDF.col("cups_per_day").gt(cupsThreshold))
                                      .filter(healthDF.col("sleep_quality_score").lt(sleepQualityThreshold))
                                      .select("userId", "cups_per_day", "sleep_quality_score");
        // 3. 对筛选结果进行一些聚合操作,例如按国家统计高风险人数
        // 这里为了演示,我们只提取出高风险用户的ID
        riskDF.createOrReplaceTempView("risk_view");
        String sqlQuery = "SELECT userId FROM risk_view ORDER BY userId ASC";
        Dataset<Row> finalDF = spark.sql(sqlQuery);
        // 4. 假设需要对风险人群进行进一步处理或告警
        // 收集风险用户的ID列表
        // 注意:collect()操作会将所有数据拉到Driver端,对大数据集要谨慎使用
        // 在真实场景下,可能会将结果写回HDFS或另一个数据库
        if (finalDF.count() > 10000) {
            // 如果结果集太大,仅取样返回,避免内存溢出
            finalDF = finalDF.limit(10000);
        }
        List<Long> riskUserIds = finalDF.collectAsList().stream()
                .map(row -> row.getLong(row.fieldIndex("userId")))
                .collect(Collectors.toList());
        return riskUserIds;
    }
}

基于大数据的全球咖啡消费与健康影响分析系统文档展示

在这里插入图片描述

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