计算机毕业设计杰瑞头像
关注
【2027大数据项目】基于大数据的奥运会奖牌榜数据分析与可视化,附源码_高质量项目_可视化_数据分析_毕设选题推荐_SPark_Hadoop_毕设指导封面图

【2027大数据项目】基于大数据的奥运会奖牌榜数据分析与可视化,附源码_高质量项目_可视化_数据分析_毕设选题推荐_SPark_Hadoop_毕设指导

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

基于大数据的奥运会奖牌榜数据分析与可视化介绍

本系统《基于大数据的奥运会奖牌榜数据分析与可视化》聚焦于历届奥运会奖牌数据的深度挖掘与多维呈现,以Hadoop分布式文件系统(HDFS)作为底层存储底座,承担原始数据集的分块存储与高容错管理,Spark计算引擎则基于YARN资源调度模式执行批量ETL作业,利用Spark SQL完成字段过滤、聚合统计与多表关联操作,Pandas与NumPy协同处理内存中的DataFrame结构以支撑复杂数学运算,后端采用Spring Boot框架构建RESTful API层,通过Controller-Service-Mapper三层架构将分析结果以JSON格式输出至前端,前端Vue项目配合ECharts图表库及ElementUI组件库渲染出数据大屏、趋势折线图、结构饼图及对比柱状图,最终形成一个从数据采集、清洗、计算到可视化展示的完整闭环系统,用户可通过国家筛选、年份区间调节与指标切换等交互操作实时获取不同维度的奖牌统计结论,无需依赖第三方平台即可完成全流程自主分析。

基于大数据的奥运会奖牌榜数据分析与可视化演示视频

演示视频

基于大数据的奥运会奖牌榜数据分析与可视化演示图片

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

基于大数据的奥运会奖牌榜数据分析与可视化代码展示

@Service
public class MedalAnalysisService {
    @Autowired
    private SparkSession sparkSession;
    
    public List<Map<String, Object>> getTrendAnalysis(String country, Integer startYear, Integer endYear) {
        Dataset<Row> df = sparkSession.read().option("header", "true").csv("hdfs://master:9000/olympics/medals.csv");
        Dataset<Row> filtered = df.filter(df.col("country").equalTo(country))
            .filter(df.col("year").$greater$eq(startYear))
            .filter(df.col("year").$less$eq(endYear));
        Dataset<Row> grouped = filtered.groupBy("year").agg(
            functions.sum("gold").as("gold_total"),
            functions.sum("silver").as("silver_total"),
            functions.sum("bronze").as("bronze_total"),
            functions.count("event").as("event_count")
        );
        List<Row> rows = grouped.collectAsList();
        List<Map<String, Object>> result = new ArrayList<>();
        for (Row row : rows) {
            Map<String, Object> item = new HashMap<>();
            item.put("year", row.getInt(0));
            item.put("gold", row.getLong(1));
            item.put("silver", row.getLong(2));
            item.put("bronze", row.getLong(3));
            item.put("total", row.getLong(1) + row.getLong(2) + row.getLong(3));
            result.add(item);
        }
        return result;
    }
    
    public Map<String, Object> getStructureAnalysis(String country, Integer year) {
        Dataset<Row> df = sparkSession.read().option("header", "true").csv("hdfs://master:9000/olympics/medals.csv");
        Dataset<Row> filtered = df.filter(df.col("country").equalTo(country))
            .filter(df.col("year").equalTo(year));
        Dataset<Row> grouped = filtered.groupBy("sport").agg(
            functions.sum("gold").as("gold"),
            functions.sum("silver").as("silver"),
            functions.sum("bronze").as("bronze")
        );
        List<Row> rows = grouped.collectAsList();
        Map<String, Object> result = new HashMap<>();
        List<Map<String, Object>> sportData = new ArrayList<>();
        long totalGold = 0, totalSilver = 0, totalBronze = 0;
        for (Row row : rows) {
            Map<String, Object> sportItem = new HashMap<>();
            String sport = row.getString(0);
            Long gold = row.getLong(1);
            Long silver = row.getLong(2);
            Long bronze = row.getLong(3);
            sportItem.put("sport", sport);
            sportItem.put("gold", gold);
            sportItem.put("silver", silver);
            sportItem.put("bronze", bronze);
            sportItem.put("total", gold + silver + bronze);
            sportData.add(sportItem);
            totalGold += gold;
            totalSilver += silver;
            totalBronze += bronze;
        }
        result.put("sports", sportData);
        result.put("totalGold", totalGold);
        result.put("totalSilver", totalSilver);
        result.put("totalBronze", totalBronze);
        result.put("totalMedals", totalGold + totalSilver + totalBronze);
        return result;
    }
    
    public List<Map<String, Object>> getCompareAnalysis(List<String> countries, Integer startYear, Integer endYear) {
        Dataset<Row> df = sparkSession.read().option("header", "true").csv("hdfs://master:9000/olympics/medals.csv");
        Dataset<Row> filtered = df.filter(df.col("country").isin(countries.toArray(new String[0])))
            .filter(df.col("year").$greater$eq(startYear))
            .filter(df.col("year").$less$eq(endYear));
        Dataset<Row> grouped = filtered.groupBy("country").agg(
            functions.sum("gold").as("gold_total"),
            functions.sum("silver").as("silver_total"),
            functions.sum("bronze").as("bronze_total")
        );
        List<Row> rows = grouped.collectAsList();
        List<Map<String, Object>> result = new ArrayList<>();
        for (Row row : rows) {
            Map<String, Object> item = new HashMap<>();
            item.put("country", row.getString(0));
            item.put("gold", row.getLong(1));
            item.put("silver", row.getLong(2));
            item.put("bronze", row.getLong(3));
            item.put("total", row.getLong(1) + row.getLong(2) + row.getLong(3));
            result.add(item);
        }
        return result;
    }
}

基于大数据的奥运会奖牌榜数据分析与可视化文档展示

在这里插入图片描述

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

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2501_92994129/article/details/164456645

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--