这期内容当中小编将会给大家带来有关怎么用SPARK对PM2.5数据进行分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联2013年至今,是专业互联网技术服务公司,拥有项目网站建设、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元龙湾做网站,已为上家服务,为龙湾各地企业和个人服务,联系电话:18982081108
今天,在各种公有云都可能申请到SPARK的环境。但彻底免费,启动最容易的是在超能云(SuperVessel)上面的SPARK服务,完全免费。
首先登录超能云主页 http://www.ptopenlab.com . 如果你之前没有申请过帐号,可以直接申请。新申请的帐号,会收到来自 manager@ptopenlab.com 的邮件,点击里面的链接来激活帐号。
登录之后,选择主页上面的"大数据实验室(Big data service)"。
登录大数据服务,在登录见面上再次输入你注册的用户名和密码。就可以进入大数据服务页面。
点击创建,即可进入创建大数据集群的界面。目前,超能云上提供了MapReduce和SPARK两种环境。我们选择SPARK,选择最小的单节点即可,如下图所示。
点击“确认创建”后,大概过30秒钟,单节点的SPARK环境就构建成功。可以看到如下界面。
点击“Master控制台”按钮,就会出现一个登陆到编辑控制台的新页面,如下。默认密码是“passw0rd”.
就可以进入SPARK集群master节点的命令行界面。到这一步,就完成SPARK环境的准备了。
为了方便同学们进行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.
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,如此类推。
感受过了结果,我们就来尝试一步一步编写自己的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")
首先,把每天(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数据进行分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。