冬枭

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

(上了大数据选修,整个学习过程如下,最后附上大作业成果)

  1. 研究目的

众所周知在2020年有一场大火,整整烧了七个月210天,400公顷的土地几乎全毁,浓烟绕了地球走了一圈,无数动物因此葬生火海,为了防止类似的事情再次重演,本次通过188万条山火分析数据,从地理位置,季节,气候,人为因素等各个因素进行分析,将山火遏制在摇篮之中。本次分析的数据包含了1992年至2015年发生在美国的森林火灾的空间数据库。野火记录来自联邦、州和地方消防组织的报告系统。由此产生的产品,称为火灾计划分析火灾发生数据库(FPA FOD),包括188万条地理参考野火记录,代表了24年期间共燃烧了1.4亿英亩的土地。通过分析该数据集可以分析,1992年到2015年,每年发生的火灾数量在6万到10万之间。2006年的火灾数量激增趋势。通过对大量的数据分析我们还要达到以下目的(主要负责分析后七个):

1.随着时间的推移,野火是变得越来越频繁还是越来越少

2.哪些县最不容易发生火灾

3.根据大小对每个火进行分类。数据描述中的大小范围是0-0.25英亩,0.26-9.9英亩,10-99.9英亩,100-299英亩,300-999英亩,1000-4999英亩,5000或更多英亩。看每个尺寸范围内发生了多少次火灾

4.分析哪些原因与更大、燃烧时间更长的野火有关?

5.比较各州的野火数量

6.比较各州因为不同起因而导致山火的次数

7.查看每平方英里的野火数量

8.查看按陆地面积归一化下的野火起因

9.以为单位查看火宅情况

10.比较各个州火灾的燃烧天数

11.由结果单独察看燃烧最严重的州的情况。

12查看燃烧时长最长的山火发生区域和附近情况

13纵火引起的火灾最多的一年和地方随着鼠标点击显示每一个火的名字和它的面积英亩。

14.考虑到火灾的规模、地点和日期预测火宅的起因

 

2. 研究过程

运行环境

虚拟软件为:VMware15.5.6

Java版本:java version "1.8.0_201"

虚拟机系统版本:ubuntu-16.04.6-server-amd64.iso(64bit)

hadoop版本:hadoop-2.7.1

Hive版本apache-hive-1.2.1

Sqoop:1.4.6版本

mysql版本:mysql-5.7.26

Sqlite3

R版本:R version 3.6.3 (2020-02-29)

R所需要的主要程序包:

library(RSQLite)

library(dbplyr)

library(dplyr)

library(purrr)

library(ggplot2)

library(xts)

library(ggfortify)

library(ggthemes)

library(maps)

library(mapdata)

library(leaflet)

 

数据集都是在Kaggle下载。

程序包镜像源采用阿里云,如果遇到一些无法下载的程序包可以手动下载https://cran.r-project.org/src/contrib/00Archive/dplyr/  

 

本次尝试了两种方式完成本次大数据分析:

教案做法:

 

按照教案的做法通过VMwaretools将文件archives拉入虚拟机下载目录当中解压到对应的文件夹,如何把经过脚本处理的文本文件导入Hive之中分析,Hive当中建立两个一个临时表,一个外部表,先上传到HDFS分布式文件系统当中,再在MySQL中创建对应字长的表,然后利用Sqoop把HDFS文件系统里的表导入MySQL,然后R中下载对应的MySQL程序包,连接mysql,通过R可以做可视化分析,以下是部分流程截图,这一部分采用的数据集主要用于代替山火数据测试分析山火类型不同在每个月发生的频率(这部分只用于前期测试,并不计入最终结果)

1.经过脚本文件处理后,csv文件变成txt然后利用HDFS的put导入到已经创建好的文件夹当中

 2.HDFS导入Hive当中,先建立一个外部表,然后导入数据

 3.再在Hive创建临时表,然后在Mysql中找到创建对应字段的表,用sqoop把表从HDFS的文件路径上传到Mysql当中

 4.数据已经导入到了Mysql,接下来是利用下载R和进行可视化分析,第一个方案到此结束(这里前面还可以利用JAVA API导入HBase当中分析,先生成可运行jar包,然后运行jar包,声明导入路径,此处不再赘述)

 

 

 

 

二、利用SQlite导入数据并分析做法

采用这个方法,卸载了之前R的版本,因为所需要用的的很多程序包在3.6版本以上才能使用,具体程序包在上面有列出,先下载SQLite,然后将现成的数据导入其中,下载最新版的R和对应的依赖包,不同于教案的做法,此处需要更改镜像源,改成阿里云或者清华大学的。程序包有部分无法找到,需要到一些网站去寻找然后用install语句下载。其次是关于分析的R语言语句,语句是在网上寻找借鉴。

  1. 下载SQLite3
  2. 添加镜像源,下载R
  3. 导入SQlite,并查看数据,大小接近1G,39列,包括地图的经纬度信息等。
  4. 下面进行可视化分析即可。由于需要分析的数据太多,可以写一个函数,通过调用函数去分析不同的影响因素。

 

 

 

3. 结果展示

4.1992年到2015年美国13山火因素场数(由碎片、纵火、设备、营火、孩子、抽烟等

 

5.下图是由各种原因导致燃烧范围最大的,由图可得,闪电的原因导致山火燃烧范围最大。

 

 

6.用地图颜色深浅显示美国各个州1992-2015年发生火灾最严重的州,如图所示,德克萨斯州经年来发生火灾最严重除此之外,还有加利福尼州。

 

7.1992-2015年,按山火发生的场数来看,下图是美国各个州因为纵火而导致的山火情况,由图可得,密密西比州等附近几个州最严重等。

 

8.1992-2015年,按山火发生的场数来看,这是由于篝火等造成的,其中加利福尼亚州最多

 

 

9.1992-2015年,按山火发生的场数来看,这是由于孩子原因造成,加利佛福尼亚州最严重

 

10.1992-2015年,按山火发生的场数来看,这是由于碎片燃烧,佐治亚州最多

 

11.1992-2015年,按山火发生的场数来看,这是由于设备导致火宅,加利福尼亚州最多

 

12.1992-2015年,按山火发生的场数来看,这是由于烟火导致的火宅,可知南达科他州最严重

 

13.1992-2015年,按山火发生的场数来看,由雷电造成的山火总数俄勒岗州

 

14.1992-2015年,按山火发生的场数来看,因为高压电线等造成的山火总数德克萨斯州

 

 

15.1992-2015年,按山火发生的场数来看,由高铁火花造成的山火,佛罗里达州最多

 

16.1992-2015年,按山火发生的场数来看,由人为吸烟造成的山火,加利福尼亚州最严重

 

 

17.1992-2015年,火灾按每平方英里来看,由于建筑造成的山火为零

 

 

181992-2015年,火灾按每平方英里来看,来看山火总共发生情况。

 

19.1992-2015年,火灾按每平方英里来看,人为纵火导致山火燃烧情况

 

20.1992-2015年,火灾按每平方英里来看,营火导致山火燃烧情况。

 

31.1992-2015年,加利福尼亚州按照县燃烧时间来精确每个县发生火宅严重情况

 

 

32.下图是加利佛尼亚州每场山火发生的时间和地点的地图

 

4. 总结分析

由结果展示的分析结果(开头后七个目的):

7从1992年-2015年,火灾场数按每平方英里来看,其中新泽西州的每平方英里发生的山火最多,情况最严重。

8按陆地面积归一化野火各个州山火情况,1992年到2015年美国13种山火因素场数(由碎片、纵火、设备、营火、孩子、抽烟等),其中由碎片因素发生山火场数最多,因为孩子因素发生的山火其次。由各种原因导致燃烧范围最大的是闪电引起的山火因素,其次是因为高压线。

9.以县为单位查看山火情况可知,犹他州的县山火情况最严重。

10.查看各个州山火平均燃烧天数(Mean burn time),其中华盛顿平均燃烧天数最多,其次是新泽西州(部分图片在总图片文件夹中有展示)

11.华盛顿燃烧天数最高可达15天以上,加利福尼亚州的燃烧天数可达到5天以上

12.查看华盛顿地图,对比结果,在罗克克里克公园附近、小瀑布公园附近发生的山火持续时间较长。附近的情况,有美利坚大学,公教大学等,距离最近的河叫波托马克河。

13.图32,可以随着鼠标点击展示加利佛尼亚州每场山火发生的时间和地点,其中可以看出Tijuana以上区域发生山火次数最多

14.考虑山火规模、地点和日期,预测山火的起因

1)若山火规模较大,达到15天左右,则大概率山火的起因由雷电引起且大概率发生在华盛顿州、新泽西州。

2)从地点来看,若是密密西比州发生山火,则原因大概率是因为纵火(人为纵火原因密密西比州发生场数远高于其他因素)。若是加利福尼亚州,则发生山火的大概率原因是篝火营火、孩子、设备、人为吸烟导致。若是佐治亚州,则大概率是因为碎片燃烧发生山火。若是南达科州,则大概率是由于烟火导致的山火。若是俄勒岗州,则大概率是由于雷电发生的山火。若是德克萨斯州,则大概率是由于高压电线造成的山火。若是佛罗里达州,则大概率是由高铁火花造成的山火。

大作业反思和结论

本次我们分析的数据只讨论了14个目的,但其实还可以分析出很多有用的东西,其次可以根据以上结论,以减少山火为目的,可加强各个州相应的防火措施建设,例如密密西比亚州,加大对人为纵火的惩罚。加利福尼亚州,加大对野营的管控,对设备使用,和对孩子防火意识的教育。俄勒岗州,加多禁止森林抽烟警示牌,加大抽烟导致山火的惩罚。德克萨斯州,加强打雷天气对森林的监视。德克萨斯州,可以加固高压电线。佛罗里达州则可以在途经森林处减慢高铁速度等,或者派人清理监控。

在本次实验中遇到的问题有很多,举一些遇到的问题,第一个是版本的问题,版本问题贯穿了整个环境搭建的过程,例如hadoop和hbase 的版本、hbase和JDK的版本,mysql和sqoop的版本等等。其次在hive见表过程之中,容易把表的字段类型弄错,或者少加一个类型,诸如此类都无法从hdfs导入到hive或者从sqoop导入到mysql。我们这次使用了R语言进行分析,R语言的版本也存在很大的问题,教案用的是旧版本的,而我们需要画一些图形,图形的依赖包只有新版本的才能用,对此,采用了更换镜像源,升级R版本,遇到一些比较特别的无法下载的依赖包到国内特定的网站下载,在文章的开头有列举。最后是关于问题的分析,我们的数据集接近1G,30多列的数据,有很大的分析价值,从理论上来说,我们的分析可能不能面面俱到,而通过数学建模等,可能能够做一个结合,制作出一个预测分析的安卓app,这学期刚好有接触安卓,有扩展空间。

posted on 2021-10-26 22:29  冬枭  阅读(173)  评论(0编辑  收藏  举报