劉?!⊥趺髦椤⑹莱∈撚睢⒚麝?yáng) 孫浩然
摘 要:將智能化信息應(yīng)用于天氣信息領(lǐng)域,是當(dāng)今社會(huì)發(fā)展的必然趨勢(shì)。通過(guò)使用中央氣象臺(tái)官方網(wǎng)站中的數(shù)據(jù),利用爬蟲技術(shù)提取各個(gè)城市的天氣狀況,基于Spark技術(shù)對(duì)數(shù)據(jù)進(jìn)行處理分析,利用SSM框架實(shí)現(xiàn)分析結(jié)果數(shù)據(jù)的可視化,設(shè)計(jì)了基于Spark的氣息數(shù)據(jù)處理與分析系統(tǒng)。系統(tǒng)的實(shí)現(xiàn)將對(duì)人們的日常生產(chǎn)生活產(chǎn)生積極的影響。
關(guān)鍵詞:Spark技術(shù);氣象數(shù)據(jù);SSM框架;網(wǎng)絡(luò)爬蟲
中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1003-5168(2021)29-0026-03
Design and Implementation of Meteorological Data Processing and
Analysis System Based on Spark
LIU Hai WANG Mingzhu LIU Shichao SHI Zhaoyu LIU Mingyang SUN Haoran
(Anyang Normal University,Anyang Henan 455000)
Abstract: The application of intelligent information in the field of weather information is the inevitable trend of today's social development. By using the data from the official website of the Central Meteorological Observatory, uses crawlers to extract the weather conditions of each city, processes and analyzes the data based on Spark technology, and uses the SSM framework to realize the visualization of the analysis result data. The realization of the system will have a positive impact on people's daily production and life.
Keywords: Spark technology;weather data;SSM framework;web crawler
天氣與人們的日常工作和生活息息相關(guān)。因此,要了解天氣信息,對(duì)可能發(fā)生的暴雨、大風(fēng)、冰雹、臺(tái)風(fēng)等災(zāi)害提前采取措施,最大限度地減少災(zāi)害給群眾生命財(cái)產(chǎn)造成的損失,保證人們的生活質(zhì)量[1]。隨著科技的發(fā)展,天氣預(yù)報(bào)的準(zhǔn)確率和精確率都在不斷提升,而隨著手機(jī)移動(dòng)APP的出現(xiàn),天氣預(yù)報(bào)的實(shí)時(shí)性也已經(jīng)實(shí)現(xiàn)。技術(shù)的發(fā)展豐富了天氣預(yù)報(bào)的功能,人們不必像過(guò)去一樣守著電視觀看天氣預(yù)報(bào),通過(guò)手機(jī)APP就能隨時(shí)隨地查看不同地點(diǎn)不同時(shí)間的天氣信息。但技術(shù)的發(fā)展也帶來(lái)了大量冗余的天氣數(shù)據(jù)。那么,如何從大量冗余數(shù)據(jù)中分析出更有價(jià)值的信息就成為一個(gè)新的研究課題。大數(shù)據(jù)技術(shù)能幫助人們?cè)诳此坪敛幌嚓P(guān)、冗余無(wú)序的大規(guī)模數(shù)據(jù)信息中提煉出有用的信息,從而使其發(fā)揮出相應(yīng)的應(yīng)用價(jià)值[2]?;诖耍P者設(shè)計(jì)了一個(gè)氣象數(shù)據(jù)處理與分析系統(tǒng)。
1 系統(tǒng)需求分析
在系統(tǒng)設(shè)計(jì)之前,首先要確定天氣信息的數(shù)據(jù)來(lái)源。本系統(tǒng)所采用的天氣信息數(shù)據(jù)主要來(lái)源于中央氣象臺(tái)官方網(wǎng)站(http://www.nmc.cn/)。中央氣象臺(tái)網(wǎng)站上有全國(guó)2 412個(gè)城市最近24 h的整點(diǎn)天氣數(shù)據(jù),每條數(shù)據(jù)又包括詳細(xì)的整點(diǎn)氣溫、整點(diǎn)降水量、整點(diǎn)風(fēng)力、整點(diǎn)氣壓和整點(diǎn)相對(duì)濕度等詳細(xì)數(shù)據(jù)。在明確數(shù)據(jù)來(lái)源的情況下,要根據(jù)研究背景和數(shù)據(jù)現(xiàn)狀確定系統(tǒng)的需求。
數(shù)據(jù)來(lái)源已知,如何獲取全部2 412個(gè)城市24個(gè)整點(diǎn)的57 888條數(shù)據(jù)是面臨的首要問(wèn)題。通過(guò)大數(shù)據(jù)采集中的數(shù)據(jù)爬蟲技術(shù)完全可以實(shí)現(xiàn)這一需求。需要特別說(shuō)明的是,本次爬取的數(shù)據(jù)沒(méi)有得到中央氣象臺(tái)官方授權(quán),使用范圍僅限本次系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)過(guò)程,沒(méi)有用于商業(yè)用途。數(shù)據(jù)獲取完畢后,要做好數(shù)據(jù)的存儲(chǔ)和分析工作。但是,像MySQL這種關(guān)系型數(shù)據(jù)庫(kù),只適用于增、刪、改、查操作,進(jìn)行數(shù)據(jù)統(tǒng)計(jì)等操作時(shí)速率非常慢,并且只能處理結(jié)構(gòu)化數(shù)據(jù)[3]。而采用大數(shù)據(jù)技術(shù)中的HDFS數(shù)據(jù)存儲(chǔ)技術(shù)和Spark數(shù)據(jù)框架處理技術(shù)完全可以實(shí)現(xiàn)大規(guī)模數(shù)據(jù)的分布式存儲(chǔ)和快速處理。處理和分析完數(shù)據(jù)后,要選取可靠的可視化技術(shù),實(shí)現(xiàn)對(duì)分析結(jié)果的展示。
2 系統(tǒng)設(shè)計(jì)的可行性
在經(jīng)濟(jì)性方面,本系統(tǒng)由專業(yè)指導(dǎo)教師領(lǐng)導(dǎo)學(xué)生團(tuán)隊(duì)利用所學(xué)專業(yè)知識(shí)開發(fā),所使用的開發(fā)平臺(tái)都是開源的,技術(shù)方面并未耗資。所用設(shè)備是學(xué)生自己的電腦,開發(fā)地點(diǎn)是學(xué)校內(nèi)部。目前,該系統(tǒng)雖然沒(méi)有產(chǎn)生經(jīng)濟(jì)效益,但是其可用性和實(shí)用性良好,在日常生活和抗洪救災(zāi)中具有潛在的應(yīng)用價(jià)值和良好的發(fā)展前景。
從操作方面來(lái)看,本平臺(tái)采用了交互性較強(qiáng)的Web界面,操作簡(jiǎn)單、直觀,對(duì)使用者的技術(shù)要求不高[4]。系統(tǒng)也不存在復(fù)雜的模塊,對(duì)普通用戶來(lái)說(shuō),并不需要很專業(yè)的操作技術(shù),只要具備上網(wǎng)能力就可以熟練使用本系統(tǒng)。
在技術(shù)方面,在系統(tǒng)開發(fā)過(guò)程中,團(tuán)隊(duì)計(jì)劃利用網(wǎng)絡(luò)爬蟲技術(shù)實(shí)現(xiàn)原始數(shù)據(jù)的獲取,使用Spark技術(shù)進(jìn)行數(shù)據(jù)分析,利用SSM技術(shù)將所得結(jié)果可視化。以上涉及的各種知識(shí)均是團(tuán)隊(duì)所學(xué)專業(yè)知識(shí),技術(shù)并不復(fù)雜,研究者能將其熟練地運(yùn)用到系統(tǒng)開發(fā)中。
3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
3.1 數(shù)據(jù)處理流程設(shè)計(jì)
本系統(tǒng)主要涉及大數(shù)據(jù)的采集、存儲(chǔ)、分析和可視化4個(gè)部分。首先,要利用網(wǎng)絡(luò)爬蟲技術(shù)獲取原始數(shù)據(jù)。其次,使用HDFS對(duì)所獲得的數(shù)據(jù)進(jìn)行分布式存儲(chǔ)。再次,使用Spark技術(shù)快速高效地分析數(shù)據(jù),分析得到的結(jié)果存儲(chǔ)到MySQL中。最后,利用SSM技術(shù)將結(jié)果進(jìn)行可視化展示。圖1為系統(tǒng)的數(shù)據(jù)處理流程。
3.2 數(shù)據(jù)采集
數(shù)據(jù)采集涉及所有城市24 h整點(diǎn)天氣數(shù)據(jù)。從中央氣象臺(tái)官方網(wǎng)站W(wǎng)eb控制臺(tái)的切換過(guò)程可以發(fā)現(xiàn),只有獲取了省份和城市編碼,才能獲取各個(gè)城市24 h整點(diǎn)天氣數(shù)據(jù)。本次大數(shù)據(jù)分析所需數(shù)據(jù)量較大,同時(shí)原始數(shù)據(jù)也較多,使用網(wǎng)絡(luò)爬蟲技術(shù)可以快速、高效地獲取數(shù)據(jù)。通過(guò)調(diào)用Python的urllib2庫(kù)中的相關(guān)函數(shù),可以直接訪問(wèn)通過(guò)請(qǐng)求URL,請(qǐng)求成功后傳回的響應(yīng)json格式數(shù)據(jù)即是系統(tǒng)所需的原始數(shù)據(jù)。但是,由于涉及2 412個(gè)城市及不同天氣狀況,所獲取的信息數(shù)據(jù)較為復(fù)雜,且某些因素可能會(huì)導(dǎo)致部分?jǐn)?shù)據(jù)丟失甚至不存在,為此需要進(jìn)行一次過(guò)濾,防止出現(xiàn)數(shù)據(jù)錯(cuò)誤。
3.3 數(shù)據(jù)存儲(chǔ)
3.3.1 HDFS存儲(chǔ)。不同類型的數(shù)據(jù)采用不同的存儲(chǔ)方式,結(jié)構(gòu)化數(shù)據(jù)可采用分布式關(guān)系型數(shù)據(jù)庫(kù)PostgreSQL等進(jìn)行存儲(chǔ),半結(jié)構(gòu)化數(shù)據(jù)可采用ElasticSearch、HBase進(jìn)行存儲(chǔ),非結(jié)構(gòu)化數(shù)據(jù)可采取文件型數(shù)據(jù)庫(kù)HDFS進(jìn)行存儲(chǔ),以保障不同類型數(shù)據(jù)能根據(jù)其數(shù)據(jù)特性和應(yīng)用場(chǎng)景,采用合適的存儲(chǔ)介質(zhì),實(shí)現(xiàn)數(shù)據(jù)的便捷管理與高效應(yīng)用[5]。在本系統(tǒng)中,利用網(wǎng)絡(luò)爬蟲技術(shù)在中央氣象臺(tái)官方網(wǎng)站上得到的數(shù)據(jù)是較為龐大而復(fù)雜的非結(jié)構(gòu)化數(shù)據(jù),因此采取文件型數(shù)據(jù)庫(kù)HDFS進(jìn)行存儲(chǔ)。HDFS分布式存儲(chǔ)有利于原始數(shù)據(jù)存儲(chǔ)和后續(xù)分布式數(shù)據(jù)分析。
3.3.2 MySQL存儲(chǔ)。存儲(chǔ)在HDFS中的原始數(shù)據(jù)經(jīng)過(guò)大數(shù)據(jù)處理框架技術(shù)Spark分析處理后會(huì)得到最終結(jié)果,利用MySQL對(duì)處理后的數(shù)據(jù)進(jìn)行存儲(chǔ),便于使用SSM技術(shù)對(duì)結(jié)果進(jìn)行可視化展示,可以實(shí)現(xiàn)前端與后端的分離。也就是說(shuō),后端大數(shù)據(jù)系統(tǒng)只負(fù)責(zé)對(duì)數(shù)據(jù)的分析與處理,數(shù)據(jù)處理完畢存入MySQL數(shù)據(jù)庫(kù)后,即可進(jìn)行其他工作;前端SSM框架也只對(duì)存儲(chǔ)在MySQL中的數(shù)據(jù)進(jìn)行可視化展示,不影響后端的其他工作。
3.4 數(shù)據(jù)分析
通過(guò)對(duì)采集的數(shù)據(jù)進(jìn)行分析可知,所采集的數(shù)據(jù)為各個(gè)城市24 h的氣象數(shù)據(jù),每一條數(shù)據(jù)又包含整點(diǎn)氣溫、整點(diǎn)降水量、整點(diǎn)風(fēng)力、整點(diǎn)氣壓和整點(diǎn)相對(duì)濕度等詳細(xì)數(shù)據(jù)。對(duì)于整點(diǎn)降水量,通過(guò)對(duì)所有城市所有整點(diǎn)時(shí)刻的降水量進(jìn)行降序排序,在一定程度上可以體現(xiàn)出洪澇風(fēng)險(xiǎn),但一個(gè)時(shí)間點(diǎn)的數(shù)據(jù)并不具有代表性。而通過(guò)對(duì)所有城市24 h整點(diǎn)時(shí)刻的降水量進(jìn)行求和,再進(jìn)行降序排序,結(jié)合整點(diǎn)降水量降序排序結(jié)果,即可全面體現(xiàn)洪澇風(fēng)險(xiǎn)。對(duì)于Spark,首先可以使用groupBy操作按照province,city_name,city_code的字段分組,再使用agg方法對(duì)rain1h字段進(jìn)行分組求和得到新的字段rain24h(過(guò)去24 h累積雨量),最后使用sort方法按照rain24h降序排列,經(jīng)過(guò)上述操作后得到新的Dateframe df_rain_sum。
在剩下的數(shù)據(jù)字段中,氣溫?cái)?shù)據(jù)中所有城市的最高溫排名、最低溫排名、溫差升序排名、溫差降序排名和平均溫度排名對(duì)指導(dǎo)人們生產(chǎn)勞作和外出旅行發(fā)揮著重要作用;風(fēng)力數(shù)據(jù)中所有城市的風(fēng)力值降序排名可以有效指導(dǎo)人們防范大風(fēng)帶來(lái)的不利影響;氣壓數(shù)據(jù)中所有城市的氣壓值降序排名、氣壓值升序排名、平均氣壓值升序排名和平均氣壓值降序排名對(duì)指導(dǎo)人們運(yùn)動(dòng)和安全也具有十分重要的意義。Spark中的各類操作方法比較多,可以滿足各類數(shù)據(jù)的處理需求。此外,Spark基于內(nèi)存進(jìn)行工作,可以直接在內(nèi)存中讀取數(shù)據(jù),減少了磁盤I/O的開銷[6]。因此Spark特別適用于這種實(shí)時(shí)的大數(shù)據(jù)分析統(tǒng)計(jì)處理。
3.5 結(jié)果可視化
數(shù)據(jù)可視化的優(yōu)點(diǎn)是能幫助人們以最快的速度理解并記憶數(shù)據(jù)。例如,有些數(shù)據(jù)信息之間存在各種各樣的聯(lián)系,如果用書面形式表達(dá),可能要花數(shù)個(gè)小時(shí)分析所有數(shù)據(jù)之間的聯(lián)系,而通過(guò)圖表就可以清晰快速地發(fā)現(xiàn)數(shù)據(jù)之間的關(guān)系[7]。通過(guò)氣象分析結(jié)果數(shù)據(jù)的可視化展示,人們可以更加清晰地觀察各個(gè)城市的天氣狀況。圖2是10個(gè)地區(qū)24 h整點(diǎn)時(shí)刻降水量和降序排名結(jié)果。在前端可視化部分,本系統(tǒng)選取SSM框架對(duì)所有大數(shù)據(jù)分析結(jié)果進(jìn)行可視化展示。之所以選擇SSM框架作為前端可視化技術(shù),是因?yàn)镾SM框架是目前流行的Java EE企業(yè)級(jí)框架[8]。SSM三個(gè)字母分別代表Spring、Spring MVC和MyBatis[9],其中,Spring可以控制所涉及的各個(gè)對(duì)象之間的依賴關(guān)系,使開發(fā)過(guò)程進(jìn)一步簡(jiǎn)化;Spring MVC能與Spring無(wú)縫連接,并對(duì)Web層解耦以進(jìn)一步簡(jiǎn)潔開發(fā)過(guò)程;MyBatis可以靈活地利用SQL語(yǔ)句對(duì)MySQL數(shù)據(jù)庫(kù)進(jìn)行操作[10-11]。
在數(shù)據(jù)可視化方面,系統(tǒng)還提供了不同類型的可視化結(jié)果,以滿足多數(shù)人員的需求。圖3為10個(gè)地區(qū)24 h內(nèi)整點(diǎn)時(shí)刻氣溫和降序排名結(jié)果。通過(guò)點(diǎn)擊可視化界面右上角的折線圖標(biāo),可以把數(shù)據(jù)可視化結(jié)果變換為折線圖(見(jiàn)圖4);通過(guò)點(diǎn)擊可視化界面右上角的表格按鈕,可以把數(shù)據(jù)可視化結(jié)果變換為表格;通過(guò)點(diǎn)擊可視化界面右上角的刷新按鈕,可以刷新最新的數(shù)據(jù)可視化結(jié)果;通過(guò)點(diǎn)擊可視化界面右上角的下載按鈕,可以把數(shù)據(jù)可視化結(jié)果下載下來(lái)。
4 結(jié)語(yǔ)
極端天氣帶來(lái)的自然災(zāi)害給人類生活帶來(lái)了極大的破壞。因此,對(duì)天氣信息進(jìn)行大數(shù)據(jù)分析,將對(duì)人們的生產(chǎn)生活、旅游出行和抗洪救災(zāi)等產(chǎn)生積極影響。本系統(tǒng)的設(shè)計(jì)積極響應(yīng)國(guó)家號(hào)召——將科技與實(shí)際相結(jié)合,能運(yùn)用在抗洪救災(zāi)、生產(chǎn)生活指導(dǎo)方面,在一定程度上提高人們的生活質(zhì)量。
參考文獻(xiàn):
[1]金靜梅.基于網(wǎng)絡(luò)爬蟲的城市天氣服務(wù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].辦公自動(dòng)化,2021(19):58-59.
[2]虎嘯.基于大數(shù)據(jù)、云計(jì)算構(gòu)建的智慧校園生活平臺(tái)[J].通訊世界,2016(11):274-275.
[3]覃禹.智慧管廊云平臺(tái)中人工智能及大數(shù)據(jù)模塊的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2021:1-72.
[4]劉海,王壯壯,喬昭源,等.基于SSM框架的校園幫平臺(tái)的設(shè)計(jì)與開發(fā)[J].數(shù)字化用戶,2020(45):20-22,25.
[5]程宇翔,梁均軍,劉洪波,等.時(shí)空數(shù)據(jù)轉(zhuǎn)換服務(wù)系統(tǒng)設(shè)計(jì)與應(yīng)用[J].地理空間信息,2021(9):116-118.
[6]閆小彬.大數(shù)據(jù)增量降維方法的研究與實(shí)現(xiàn)[D].哈爾濱:黑龍江大學(xué),2019:1-71.
[7]艾青龍.柔性自動(dòng)化生產(chǎn)線工藝信息組織技術(shù)研究[D].南昌:南昌大學(xué),2017:1-83.
[8]臧聰聰.氣象預(yù)報(bào)系統(tǒng)中數(shù)據(jù)處理子系統(tǒng)的研究與實(shí)現(xiàn)[D].南京:東南大學(xué),2018:1-75.
[9]邵玉春.高校教師聘期考核系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].南昌:江西師范大學(xué),2018:1-65.
[10]吳小東.基于Dubbo和Zookeeper的學(xué)校自助證明打印系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].甘肅:蘭州大學(xué),2021.
[11]薛峰,梁鋒,徐書勛,等.基于Spring MVC框架的Web研究與應(yīng)用[J].合肥工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2012(3):337-340.