您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關怎么用SPARK對PM2.5數據進行分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
今天,在各種公有云都可能申請到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數據進行分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。