(保姆级)Spark气象监测数据分析-总纲(大数据专业实习)

步骤链接(这个项目有续集会继续更新)

步骤0.1sbt安装之后一直卡住的原理,可以不会但得懂

步骤0.1替代:使用idea省心省力编译Scala

(保姆级)Spark气象监测数据分析-步骤1.1数据预处理

(保姆级)Spark气象监测数据分析-步骤1.2上将处理的文件传到HDFS上

(保姆级)Spark气象监测数据分析-步骤2.1筛选六大污染物浓度排名前20的时段

(保姆级)Spark气象监测数据分析-步骤2.2计算PM2.5浓度在五大浓度限值区间的分布

(保姆级)Spark气象监测数据分析-步骤2.3计算每日首要污染物及其污染程度

(保姆级)Spark气象监测数据分析-步骤3.1分析SO2浓度与NO2浓度的关系;分析PM10浓度与空气湿度的关系;分析O3浓度与云量的关系

(保姆级)Spark气象监测数据分析-步骤4.1数据可视化

写在前面的话

首先这篇博客绝对原创。读者遇到编程中的任何问题可以留言,看到了就会回复

需要的前瞻知识

这篇博客是假设读者都是已经安装好了Hadoop,Spark,以及对idea插件等,如果在安装这些大数据软件遇到了困难可以根据版本号在CSDN里搜对应的大数据软件安装

用到的软件版本

Hadoop2.7.7;Java1.8.0;sbt1.4.0;Spark2.4.0;Hive2.1.1;ZooKeeper3.5.10

数据集

数据集

也可点击下面的链接

链接:https://pan.baidu.com/s/13T8IHjAjvbsvQtQ01Ro__Q?pwd=494j 
提取码:494j

题目原型

可以参考厦大林子雨教授大数据案例分析

案例简介

本案例针对气象监测数据进行分析,采用Scala为编程语言,采用Hadoop存储数据,采用Spark对数据进行处理分析,并对结果进行数据可视化。主要内容如下:

(1)对数据集进行数据预处理,填补缺失值,剔除异常值,保存到HDFS中,使用编程语言为Python;

(2)使用Spark对数据进行分析,其中数据分析包括3个部分,相关系分析包括3个部分,使用的语言为Scala;

(3)对分析结果进行可视化呈现,如汇总数据可视化等,使用的语言为Python。

数据集

实验数据来源于2021年中国研究生数学建模竞赛B题(data1.csv、data2.csv),为空气质量监测站点实际监测得到的数据。可以从链接:https://pan.baidu.com/s/1hDcC2FBZV-A0Rd_uXesBng?pwd=s8n3下载数据集。

其中,data1.csv为某监测点的逐小时数据,包括:监测时间、SO2监测浓度(μg/m³)、NO2监测浓度(μg/m³)、PM10监测浓度(μg/m³)、PM2.5监测浓度(μg/m³)、O3监测浓度(μg/m³)、CO监测浓度(mg/m³)、温度(℃)、湿度(%)、气压(MBar)、风速(m/s)、风向(°)、云量、长波辐射(W/m²),数值类型为浮点型,共计19432条;data2.csv为某监测点的逐日数据,包括:监测时间、SO2监测浓度(μg/m³)、NO2监测浓度(μg/m³)、PM10监测浓度(μg/m³)、PM2.5监测浓度(μg/m³)、O3监测浓度(μg/m³)、CO监测浓度(mg/m³),数值类型为浮点型,共计822条。

数据集表格中的数据存在部分缺失的问题。因为实测数据具有一定时间连续性,所以针对连续缺失的部分,可通过设定标准来剔除连续缺失数过大的部分,而对其他缺失部分可以采用填补附近值来保留前后数据时序性的信息,一方面可以保留更多地数据,另一方面保证了数据的连续性。具体而言,数据文件包含监测点A的“逐小时污染物浓度与气象实测数据”,其中存在的问题是因监测站点设备调试、维护等原因,实测数据在连续时间内存在部分或全部缺失、或者部分气象指标在某些监测站点无法获取的情况。

针对数据集中的数据缺失问题,对于非负指标的负数值数据,观察到其前后数据都为0,推测是在测量0值时出现错误,故补0即可。实测数据在连续时间内存在部分或全部丢失,认定若实测数据存在连续大于3条及以上的情况丢失了重要的时序信息,故进行数据删除;

其他情况考虑到由于数据是具有时序连续性,所以考虑结合历史时间条件来对需要补全的数据进行填充,本次实验均对连续丢失数不大于3条的数据,按照前向一小时数据进行复制填充,来补全数据;

详细步骤

(1)对data1.csv进行:填充操作、删除空行操作以及前向填充操作,存储文件为res.csv,供后续分析;

(2)将res.csv文件上传至HDFS,使用hdfs dfs -put res.csv即可上传至HDFS;

(3)筛选六大污染物浓度排名前20的时段。六大污染物为SO2、NO2、PM10、PM2.5、O3以及CO,该部分数据分析主要包括:1)读入res.csv,创建临时视图,从临时视图中选取字段:监测时间,SO2监测浓度(μg/m3);2)将选取的数据按照浓度降序排列,并选取前20的数据;3)将上述前20数据再按年度时间进行升序排序,存入文件。

(4)计算PM2.5浓度在五大浓度限值区间的分布。该部分数据分析主要针对PM2.5浓度数据,其中浓度限值区间如表3.1所示,但此处没有严格要求限制为每日数据,而是只使用其区间信息。由于在第六区间及之后,PM2.5浓度数据条目为0,所以仅计算在前五个区间的分布,分析主要包括:1)读入res.csv,创建临时视图,从临时视图中选取字段PM2.5监测浓度(μg/m3);2)使用count函数计算各个区间的分布数量;3)存入新的dataframe,表头为(区间等级,数量)。

(5)计算每日首要污染物及其污染程度。该部分数据分析使用data2.csv,利用各污染物浓度计算每日的AQI值,得到相应的首要污染物和空气质量等级。根据《环境空气质量指数(AQI)技术规定(试行)》(HJ633-2012),空气质量指数(AQI)可用于判别空气质量等级。首先需得到各项污染物的空气质量分指数(IAQI),其计算公式如下:

式中各符号含义如下:

对于AQI的计算公式如下:

空气质量等级范围根据AQI数值划分,等级对应的AQI范围见下表:

代码细节为:1)首先利用sql语句挑选出所需要的浓度数据,再使用df.collect将其转换成数组;2)利用上述公式对表格数据进行计算,存入ArrayBuffer;3)将ArrayBuffer转换成Array类型,然后转换成Seq类型,最后转化为RDD;4)创建schema以及使用map映射,转化为dataframe格式并储存。

(6)分析SO2浓度与NO2浓度的关系。该部分数据分析使用res.csv,即污染物浓度的逐小时数据。其中使用到了Spark ML中计算皮尔逊相关系数的函数包,主要步骤如下:1)使用sql语句,从res.csv中选择SO2和NO2的逐小时浓度数据;2)保存其数据至csv文件,供后续可视化使用;3)使用describe函数,计算其数量、均值、标准差以及最值;4)将选择的数据映射为Double类型;5)使用Statistics.corr(SO2, NO2, "pearson")函数,计算其相关系数。

(7)分析PM10浓度与空气湿度的关系。因为PM10浓度的变化与空气含水量密切相关,比如当相对湿度大于60%以上时, PM10颗粒会吸湿增大,所以该部分试图分析PM10浓度与空气湿度的关系。主要步骤参考上一部分:1)使用sql语句,从res.csv中选择PM10浓度和空气湿度的逐小时浓度数据;2)保存其数据至csv文件,供后续可视化使用;3)使用describe函数,计算其数量、均值、标准差以及最值;4)将选择的数据映射为Double类型;5)使用Statistics.corr(PM10, Air, "pearson")函数,计算其相关系数。

(8)分析O3浓度与云量的关系。因为云量及其云内液体的吸收对O3含量有一定影响,所以该部分试图对O3浓度与云量的关系进行分析,主要使用斯皮尔曼相关系数。主要步骤参考上一部分:1)使用sql语句,从res.csv中选择O3浓度和云量的逐小时浓度数据;2)保存其数据至csv文件,供后续可视化使用;3)使用describe函数,计算其数量、均值、标准差以及最值;4)将选择的数据映射为Double类型;5)使用Statistics.corr(O3, Cloud, "spearman")函数,计算其相关系数。

(9)使用matplotlib库对上述分析结果进行可视化展示。

  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载体验!下载完使用问题请私信沟通。 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 基于Spark对全国历史气象数据可视化分析python源码+PDF报告+超详细注释(课程期末大作业).zip基于Spark对全国历史气象数据可视化分析python源码+PDF报告+超详细注释(课程期末大作业).zip基于Spark对全国历史气象数据可视化分析python源码+PDF报告+超详细注释(课程期末大作业).zip基于Spark对全国历史气象数据可视化分析python源码+PDF报告+超详细注释(课程期末大作业).zip基于Spark对全国历史气象数据可视化分析python源码+PDF报告+超详细注释(课程期末大作业).zip基于Spark对全国历史气象数据可视化分析python源码+PDF报告+超详细注释(课程期末大作业).zip基于Spark对全国历史气象数据可视化分析python源码+PDF报告+超详细注释(课程期末大作业).zip基于Spark对全国历史气象数据可视化分析python源码+PDF报告+超详细注释(课程期末大作业).zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值