劉海 王明珠 劉世超 石釗宇 劉明陽 孫浩然




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