从零开始,手把手教会你5分钟用SPARK对PM2.5数据进行分析(包括环境准备和SPARK代码)...
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
要從零開始,五分鐘做完一個基于SPARK的PM2.5分析項目,你是不是會問
1. PM2.5的數(shù)據(jù)在哪里?
2. SPARK的環(huán)境哪兒有?
3. 程序怎么編?
不用急,跟著我做,5分鐘就可以從零開始完成所有的事情。
準備SPARK環(huán)境
今天,在各種公有云都可能申請到SPARK的環(huán)境。但徹底免費,啟動最容易的是在超能云(SuperVessel)上面的SPARK服務(wù),完全免費。
首先登錄超能云主頁 http://www.ptopenlab.com . 如果你之前沒有申請過帳號,可以直接申請。新申請的帳號,會收到來自 manager@ptopenlab.com 的郵件,點擊里面的鏈接來激活帳號。
登錄之后,選擇主頁上面的"大數(shù)據(jù)實驗室(Big data service)"。
登錄大數(shù)據(jù)服務(wù),在登錄見面上再次輸入你注冊的用戶名和密碼。就可以進入大數(shù)據(jù)服務(wù)頁面。
點擊創(chuàng)建,即可進入創(chuàng)建大數(shù)據(jù)集群的界面。目前,超能云上提供了MapReduce和SPARK兩種環(huán)境。我們選擇SPARK,選擇最小的單節(jié)點即可,如下圖所示。
點擊“確認創(chuàng)建”后,大概過30秒鐘,單節(jié)點的SPARK環(huán)境就構(gòu)建成功。可以看到如下界面。
點擊“Master控制臺”按鈕,就會出現(xiàn)一個登陸到編輯控制臺的新頁面,如下。默認密碼是“passw0rd”.
就可以進入SPARK集群master節(jié)點的命令行界面。到這一步,就完成SPARK環(huán)境的準備了。
PM2.5數(shù)據(jù)
為了方便同學(xué)們進行SPARK的學(xué)習,我們特地把過去5個月的PM2.5數(shù)據(jù)放到了超能云上面,供大家作為實驗數(shù)據(jù):)這些數(shù)據(jù)是從我們5個PM2.5監(jiān)測傳感器每天測量所得的第一手真實數(shù)據(jù)。它們測量的是北京上地中關(guān)村軟件園地區(qū)的真實情況哦。
不要小看這五個PM2.5空氣質(zhì)量傳感器,它們是IBM研究院的最新研究成果。先看看圖吧,個子小,完全符合工業(yè)戶外設(shè)計要求,自帶3G數(shù)據(jù)回傳,而且是太陽能供電。一句話,戶外室內(nèi)安裝,一根線都不用拉。就這么酷!
先上個圖,有圖有真相。
這是一個是基于激光散射技術(shù)(米氏散射理論)的低成本傳感器。相比于現(xiàn)行市場上的傳感器技術(shù),精度高多了,能從PM0.3一直測到PM10,關(guān)鍵是免維護。
言歸正傳,我們這次把數(shù)據(jù)都整理好,方便超能云的用戶進行嘗試數(shù)據(jù)分析。獲取數(shù)據(jù)的方法如下:
cd?/home/opuser wget?http://softrepoNaNopenlab.com/bigdata/pm25_file.tar使用tar命令解開tar包
tar?-xf?pm25_file.tar在生成的目錄pm25_file中有三個文件。其中,pm25.txt是數(shù)據(jù)文件,例如08-Nov-2014, 84是指2014年11月8日某一時刻的測量值為84.?
SPARK的實現(xiàn)代碼
1.以腳本運行
pm25_2.10-1.0.jar是已經(jīng)編譯好的實現(xiàn)程序。run.sh是運行腳本。如果想先感覺一下的同學(xué),可以直接運行./run.sh。就可以得到如下結(jié)果:
gradeOne?is?24.77876% gradeTwo?is?25.663715% gradeThree?is?20.353981% gradeFour?is?12.38938% gradeFive?is?15.004249% gradeSix?is?1.7699115%這個結(jié)果表示,在這5個月的數(shù)據(jù)中,達到國家規(guī)定的一級到六級空氣質(zhì)量的天數(shù)的百分比。其中,gradeSix是PM2.5測量值在250以上,gradeFive是150~250,如此類推。
2.計算PM2.5濃度均值的步驟及代碼
感受過了結(jié)果,我們就來嘗試一步一步編寫自己的SPARK代碼。先進入SPARK的編輯環(huán)境:
讀取輸入數(shù)據(jù)
scala>?val?datainput?=?sc.textFile("pm25.txt")讀取所有pm25的數(shù)據(jù)到一個list中。因為我們的數(shù)據(jù)是”日期,pm2.5值“,所以中間使用","作為分隔符,以整形讀取第二個值。
scala>?val?Valuelist?=?datainput.map(_.split(",")).map(x=>(x(1).trim().toInt))計算5個月所有數(shù)據(jù)獲得的PM2.5均值
scala>?val?AveragePm25=Valuelist.reduce(_+_)/Valuelist.count打印輸出結(jié)果
scala>?println("AveragePm25?is?"+AveragePm25+"ug/m3")3.PM2.5濃度按天排序
首先,把每天(x(0)作為key)的PM2.5數(shù)值(x(1))求和(.reduceByKey(_+_))
獲取每天的記錄個數(shù)
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天的數(shù)值
scala>?sortData.take(10).foreach(p=>println(p))轉(zhuǎn)載于:https://my.oschina.net/u/1431433/blog/412684
總結(jié)
以上是生活随笔為你收集整理的从零开始,手把手教会你5分钟用SPARK对PM2.5数据进行分析(包括环境准备和SPARK代码)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EXCEL中提取某行最后一个有效单元格数
- 下一篇: .Net缓存小结(中)