计算机大数据毕设项目—基于Spark的天气数据分析可视化系统(基于大数据的西南天气数据分析与应用系统)【Springboot-Vue-Mysql,Hadoop-spark-hive,爬虫,大屏看板】
·
基于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图片展示






04部分代码展示
//(交流学习+vx:S20231025S )
@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<String, Object> params = new HashMap<String, Object>();
params.put("xColumn", xColumnName);
params.put("yColumn", yColumnName);
EntityWrapper<TianqiinfoEntity> ew = new EntityWrapper<TianqiinfoEntity>();
//获取结果
List<Map<String, Object>> result = tianqiinfoService.selectValue(params, ew);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(Map<String, Object> 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);
}
更多推荐
所有评论(0)