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