温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用SPARK对PM2.5数据进行分析

发布时间:2021-12-16 22:00:39 来源:亿速云 阅读:137 作者:柒染 栏目:云计算

这期内容当中小编将会给大家带来有关怎么用SPARK对PM2.5数据进行分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

准备SPARK环境

今天,在各种公有云都可能申请到SPARK的环境。但彻底免费,启动最容易的是在超能云(SuperVessel)上面的SPARK服务,完全免费。

  1. 首先登录超能云主页 http://www.ptopenlab.com . 如果你之前没有申请过帐号,可以直接申请。新申请的帐号,会收到来自 manager@ptopenlab.com 的邮件,点击里面的链接来激活帐号。

  2. 登录之后,选择主页上面的"大数据实验室(Big data service)"。

    怎么用SPARK对PM2.5数据进行分析

  3. 登录大数据服务,在登录见面上再次输入你注册的用户名和密码。就可以进入大数据服务页面。

    怎么用SPARK对PM2.5数据进行分析

  4. 点击创建,即可进入创建大数据集群的界面。目前,超能云上提供了MapReduce和SPARK两种环境。我们选择SPARK,选择最小的单节点即可,如下图所示。

    怎么用SPARK对PM2.5数据进行分析

  5. 点击“确认创建”后,大概过30秒钟,单节点的SPARK环境就构建成功。可以看到如下界面。

    怎么用SPARK对PM2.5数据进行分析

  6. 点击“Master控制台”按钮,就会出现一个登陆到编辑控制台的新页面,如下。默认密码是“passw0rd”.

    怎么用SPARK对PM2.5数据进行分析

  7. 就可以进入SPARK集群master节点的命令行界面。到这一步,就完成SPARK环境的准备了。

PM2.5数据

为了方便同学们进行SPARK的学习,我们特地把过去5个月的PM2.5数据放到了超能云上面,供大家作为实验数据:)这些数据是从我们5个PM2.5监测传感器每天测量所得的第一手真实数据。它们测量的是北京上地中关村软件园地区的真实情况哦。

不要小看这五个PM2.5空气质量传感器,它们是IBM研究院的最新研究成果。先看看图吧,个子小,完全符合工业户外设计要求,自带3G数据回传,而且是太阳能供电。一句话,户外室内安装,一根线都不用拉。就这么酷!

先上个图,有图有真相。

这是一个是基于激光散射技术(米氏散射理论)的低成本传感器。相比于现行市场上的传感器技术,精度高多了,能从PM0.3一直测到PM10,关键是免维护。

言归正传,我们这次把数据都整理好,方便超能云的用户进行尝试数据分析。获取数据的方法如下:

cd /home/opuser
wget http://softrepoNaNopenlab.com/bigdata/pm25_file.tar

使用tar命令解开tar包

tar -xf pm25_file.tar

在生成的目录pm25_file中有三个文件。其中,pm25.txt是数据文件,例如08-Nov-2014, 84是指2014年11月8日某一时刻的测量值为84. 

SPARK的实现代码

1.以脚本运行

pm25_2.10-1.0.jar是已经编译好的实现程序。run.sh是运行脚本。如果想先感觉一下的同学,可以直接运行./run.sh。就可以得到如下结果:

gradeOne is 24.77876%
gradeTwo is 25.663715%
gradeThree is 20.353981%
gradeFour is 12.38938%
gradeFive is 15.004249%
gradeSix is 1.7699115%

这个结果表示,在这5个月的数据中,达到国家规定的一级到六级空气质量的天数的百分比。其中,gradeSix是PM2.5测量值在250以上,gradeFive是150~250,如此类推。

2.计算PM2.5浓度均值的步骤及代码

感受过了结果,我们就来尝试一步一步编写自己的SPARK代码。先进入SPARK的编辑环境:

$ /opt/spark-1.0.2-bin-hadoop2/bin/spark-shell
scala>

读取输入数据

scala> val datainput = sc.textFile("pm25.txt")

读取所有pm25的数据到一个list中。因为我们的数据是”日期,pm2.5值“,所以中间使用","作为分隔符,以整形读取第二个值。

scala> val Valuelist = datainput.map(_.split(",")).map(x=>(x(1).trim().toInt))

计算5个月所有数据获得的PM2.5均值

scala> val AveragePm25=Valuelist.reduce(_+_)/Valuelist.count

打印输出结果

scala> println("AveragePm25 is "+AveragePm25+"ug/m3")

3.PM2.5浓度按天排序

首先,把每天(x(0)作为key)的PM2.5数值(x(1))求和(.reduceByKey(_+_))

scala> val datamap=datainput.map(_.split(",")).map(x=>(x(0),x(1).trim().toInt)).reduceByKey(_+_)

获取每天的记录个数

scala> val recordnumber=datainput.map(_.split(",")). map(x=>(x(0),1)).reduceByKey(_+_)

计算每一天的PM2.5平均值

scala> val dayAverage = datamap.join(recordnumber).map(x=>(x._1,x._2._1/x._2._2))

把所有天的当天平均值排序

scala> val sortData = dayAverage.map(x=>(x._2,x._1)).sortByKey(false).map(x=>(x._2,x._1))

打印排序后,最高的10天的数值

scala> sortData.take(10).foreach(p=>println(p))

上述就是小编为大家分享的怎么用SPARK对PM2.5数据进行分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI