# 基于Spark天气数据分析可视化系统 **Repository Path**: guangduan/Visualization-system-for-weather-data-analysis-based-on-Spark ## Basic Information - **Project Name**: 基于Spark天气数据分析可视化系统 - **Description**: 基于Spark天气数据分析可视化系统基于 Java 语言,融合了 Hadoop,Spark,Hive大数据处理技术、Spring Boot 框架,Vue.js以及 MySQL 数据库,结合Scrapy爬虫,数据分析数据清洗等功能。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-20 - **Last Updated**: 2025-09-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: Hadoop-spark-hive, 天气数据分析可视化系统, Springboot-vue-mysql, Scrapy爬虫, Java ## README ## 基于Hadoop的天气数据分析可视化系统 ## 基于Spark的西南天气数据分析与应用系统 ## 前言介绍 本文围绕基于Spark的西南天气数据分析展开研究。西南地区地形复杂、天气多变,气象数据对当地生态、农业、交通等领域至关重要。通过多数据源采集西南地区长时间序列天气数据,利用大数据技术Hadoop,Spark和hive等技术对原始数据进行清洗、转换与集成,构建高质量气象数据集。从空气质量、白天和夜晚天气状况、高温、风向、降水等多个维度对数据进行深入分析,并借助Matplotlib、Seaborn、Plotly Express等库进行可视化展示。同时,紧密结合农业、交通、能源等行业需求,分析天气数据与行业活动的关联,如构建农业气象灾害预警模型、依天气调整交通管制措施、为能源生产与调度提供决策支持等。研究表明,基于Spark的大数据分析技术能有效处理西南地区气象数据,为各行业提供有价值的决策参考,助力西南地区气象服务与发展。 ## 01开发环境 1.1Java 技术 1.2Spring Boot 框架 1.3Hadoop,spark,hive 1.4Scrapy爬虫 1.5MySQL数据库 1.6B/S 结构 1.7Vue.js 技术 ## 02系统功能亮点 **亮点(爬虫【天气预报24小时详情网站】、数据备份、数据分析、大屏看板、Echarts可视化)** 1、数据管理:爬虫信息列表展示。 2、数据存储:mysql数据库。 3、可视化分析:各种数据分析统计后图表大屏展示 4、数据分析:根据hadoop大数据技术进行数据分析 ## 03图片展示 ![输入图片说明](01.png) ![输入图片说明](02.png) ![输入图片说明](03.png) ![输入图片说明](04.png) ![输入图片说明](05.png) ![输入图片说明](08.png) ## 04部分代码展示 ``` /** *学习交流vx18484646674 * */ @RequestMapping("/value/{xColumnName}/{yColumnName}") public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) throws IOException { //读取文件,如果文件存在,则优先返回文件内容 java.nio.file.Path path = java.nio.file.Paths.get("value_tianqiinfo_" + xColumnName + "_" + yColumnName + "_timeType.json"); if(java.nio.file.Files.exists(path)) { String content = new String(java.nio.file.Files.readAllBytes(path), java.nio.charset.StandardCharsets.UTF_8); return R.ok().put("data", (new org.json.JSONArray(content)).toList()); } //构建查询统计条件 Map params = new HashMap(); params.put("xColumn", xColumnName); params.put("yColumn", yColumnName); EntityWrapper ew = new EntityWrapper(); //获取结果 List> result = tianqiinfoService.selectValue(params, ew); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for(Map m : result) { for(String k : m.keySet()) { if(m.get(k) instanceof Date) { m.put(k, sdf.format((Date)m.get(k))); } } } Collections.sort(result, (map1, map2) -> { // 假设 total 总是存在并且是数值类型 Number total1 = (Number) map1.get("total"); Number total2 = (Number) map2.get("total"); if(total1==null) { total1 = 0; } if(total2==null) { total2 = 0; } return Double.compare(total2.doubleValue(), total1.doubleValue()); }); return R.ok().put("data", result); } ```