摘要:2020年初,新冠肺炎大爆發(fā),各地防疫形式嚴(yán)峻,對新冠肺炎的趨勢實(shí)時監(jiān)控,對于疫情發(fā)展的態(tài)勢,成為公眾所迫切關(guān)心的話題。針對新冠疫情的實(shí)時數(shù)據(jù)匯總統(tǒng)計(jì)并以動態(tài)化形式展示數(shù)據(jù)信息設(shè)計(jì)一種可視化數(shù)據(jù)管理系統(tǒng),通過對新冠肺炎數(shù)據(jù)進(jìn)行可視分析,以直觀的圖表形式展示疫情動態(tài)變化趨勢。針對新冠疫情數(shù)據(jù)進(jìn)行數(shù)據(jù)采集、數(shù)據(jù)結(jié)構(gòu)化、數(shù)據(jù)處理等設(shè)計(jì)一個可視化模型,以Heroku新冠疫情網(wǎng)站發(fā)布數(shù)據(jù)進(jìn)行數(shù)據(jù)統(tǒng)計(jì),形成每日新冠肺炎新增、死亡、治愈數(shù)量狀態(tài),并以地圖的形式動態(tài)循環(huán)展現(xiàn)每日變化圖,從而實(shí)現(xiàn)基于新冠疫情的可視化數(shù)據(jù)管理系統(tǒng)。
關(guān)鍵詞:可視化;數(shù)據(jù)管理;新冠肺炎;疫情監(jiān)控
0 引言
2020年初,新型冠狀病毒感染的肺炎(COVID-19)的爆發(fā),引起了全世界的關(guān)注。疫情的實(shí)時動態(tài)數(shù)據(jù)也倍受公眾關(guān)注,通過肺炎確診數(shù)量、地區(qū)的變化來加強(qiáng)對地區(qū)的管控程度并作出及時調(diào)整至關(guān)重要。因此,基于COVID-19的可視化數(shù)據(jù)管理系統(tǒng)將成為一種解決方法?;谛鹿诓《镜膶?shí)時動態(tài)的可視化數(shù)據(jù)管理系統(tǒng)將實(shí)現(xiàn)對新冠病毒數(shù)據(jù)的采集、結(jié)構(gòu)化、存儲、清洗、統(tǒng)計(jì)、最后展示。
1 系統(tǒng)需求分析
本系統(tǒng)的設(shè)計(jì)旨在開發(fā)一個可視化數(shù)據(jù)管理系統(tǒng),針對數(shù)據(jù)模型定義,數(shù)據(jù)采集,數(shù)據(jù)處理,數(shù)據(jù)可視化均為可視化操作,實(shí)現(xiàn)對新冠肺炎病毒的采集與顯示功能,并以地圖的形式動態(tài)循環(huán)展現(xiàn)每日變化圖。該系統(tǒng)主要根據(jù)Heroku發(fā)布的全球新冠肺炎數(shù)據(jù)進(jìn)行實(shí)時采集,對采集數(shù)據(jù)進(jìn)行清洗轉(zhuǎn)換,再對整理好的數(shù)據(jù)進(jìn)行統(tǒng)計(jì),最后使用動態(tài)數(shù)據(jù)圖進(jìn)行展示。
2 系統(tǒng)設(shè)計(jì)
本系統(tǒng)共有4個模塊,分別是:數(shù)據(jù)模型、數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)可視化。每個模塊對應(yīng)不同的功能。功能模塊設(shè)計(jì)圖如下:
2.1數(shù)據(jù)模型
數(shù)據(jù)模型的實(shí)質(zhì)是數(shù)據(jù)元素和實(shí)體的定義,可以理解為元數(shù)據(jù)管理,為新冠肺炎數(shù)據(jù)提供元數(shù)據(jù)定義,負(fù)責(zé)新冠肺炎數(shù)據(jù)數(shù)據(jù)的存取。
在當(dāng)下大數(shù)據(jù)時代,集群化的數(shù)據(jù)存儲方案將會是理想的選擇。
本系統(tǒng)的在數(shù)據(jù)模型中本系統(tǒng)采用集成HDFS,HBase,MongoDB三大數(shù)據(jù)存儲系統(tǒng)的方式,目的在于支持不同類型的數(shù)據(jù)存儲,包括文件存儲(HDFS)、結(jié)構(gòu)化數(shù)據(jù)存儲(HBase)、鍵值對存儲(MongoDB)。HBase本身就運(yùn)行在HDFS之上,使用列族數(shù)據(jù)庫存儲,對提高存儲訪問效率有所提高。
數(shù)據(jù)采集的數(shù)據(jù)數(shù)據(jù)模型,首先應(yīng)當(dāng)區(qū)分國別(country),對于不同的國家還應(yīng)該定義國家代碼(country_code),其次是不同省市(province)。新冠病毒的確診數(shù)據(jù)(confirmed)、死亡數(shù)據(jù)(deaths)、康復(fù)數(shù)據(jù)(recovered)是衡量新冠病毒動態(tài)的必要指標(biāo)。如下圖所示為新冠肺炎的數(shù)據(jù)模型定義:
由于在后續(xù)過程中還會涉及統(tǒng)計(jì)的內(nèi)容,因此對于統(tǒng)計(jì)的數(shù)據(jù)模型也應(yīng)當(dāng)預(yù)先定義完成。統(tǒng)計(jì)模型包括國別(country)、國家代碼(country_code)、確診數(shù)(confrimed)、死亡數(shù)(deaths)、康復(fù)數(shù)(recovered)。如下圖所示為新冠肺炎匯總的數(shù)據(jù)模型定義:
2.2數(shù)據(jù)采集
數(shù)據(jù)采集又稱為“數(shù)據(jù)獲取”或“數(shù)據(jù)收集”。數(shù)據(jù)采集有多種多樣的方式可以實(shí)現(xiàn),例如文件解析采集、數(shù)據(jù)錄入、數(shù)據(jù)庫采集、網(wǎng)絡(luò)爬蟲等等。每種采集方式的針對性都非常強(qiáng),對于不同的場景,采集方式的使用可能會有較大差異。
2.2.1網(wǎng)絡(luò)爬蟲
對于新冠肺炎數(shù)據(jù)的采集,本系統(tǒng)以采集公共互聯(lián)網(wǎng)的網(wǎng)頁信息的形式進(jìn)行。網(wǎng)頁采集的形式大多數(shù)都是基于網(wǎng)絡(luò)爬蟲。網(wǎng)絡(luò)爬蟲是按照一定規(guī)則,自動地不抓取互聯(lián)網(wǎng)信息的一種程序或者腳本。網(wǎng)絡(luò)爬蟲工作時是從初始的地址開始,找到這些初始網(wǎng)頁上鏈接到其他網(wǎng)頁的地址列表,將它們存入待爬的地址表中,然后對地址表中的每個地址根據(jù)一定策略逐個搜索,從網(wǎng)頁上下載、保存網(wǎng)頁信息,分析并獲取網(wǎng)頁中符合條件的新的網(wǎng)頁地址鏈接。
基于網(wǎng)絡(luò)爬蟲的原理,我們可以自定義爬蟲爬取的網(wǎng)頁地址、爬取深度、爬取內(nèi)容等。
2.2.2數(shù)據(jù)源
本系統(tǒng)以及模型所需數(shù)據(jù)來源于
https://coronavirus-tracker-api.herokuapp.com/#/網(wǎng)站,通過網(wǎng)站可查詢獲取到全球新冠肺炎確診總?cè)藬?shù)、死亡人數(shù)、康復(fù)人數(shù)、以及獲取最新的已確診病例,死亡和康復(fù)總數(shù)、還可通過地區(qū)獲取數(shù)據(jù)等。
網(wǎng)站給出了獲取數(shù)據(jù)的路徑,并且對返回的數(shù)據(jù)結(jié)構(gòu)進(jìn)行的解釋,對于新冠肺炎數(shù)據(jù)的采集,采集獲取到的數(shù)據(jù)均為Json數(shù)據(jù)格式。如圖所示為數(shù)據(jù)返回樣例和數(shù)據(jù)結(jié)構(gòu):
對于上圖所示數(shù)據(jù)結(jié)構(gòu),分為三個數(shù)據(jù)解析部分,一為確診(confirmed),二為死亡(deaths),三為康復(fù)(recovered)。針對三類數(shù)據(jù)進(jìn)行解析,可得到一個對象數(shù)組,對于每一個對象,其鍵值對指明了對應(yīng)數(shù)據(jù)字段含義以及數(shù)據(jù)。如下圖為對象數(shù)據(jù)內(nèi)容:
2.2.3數(shù)據(jù)采集
為了保證數(shù)據(jù)的時效性,本系統(tǒng)定義了數(shù)據(jù)采集周期(定時器組件)、網(wǎng)絡(luò)爬蟲源(數(shù)據(jù)源組件)、數(shù)據(jù)解析腳本(js腳本)、以及數(shù)據(jù)存儲位置(數(shù)據(jù)源組件)等四部分。
1)定時器,設(shè)置采集任務(wù)啟動方式,可以設(shè)置定時(02:00)啟動,或間隔周期啟動(3600秒)。
2)數(shù)據(jù)源:網(wǎng)站,設(shè)置數(shù)據(jù)源網(wǎng)站信息,數(shù)據(jù)接口鏈接。
3)網(wǎng)絡(luò)爬蟲,設(shè)置爬蟲屬性,結(jié)果輸出變量。
4)JS腳本,解析爬取的數(shù)據(jù),結(jié)構(gòu)化,預(yù)處理。
5)目的表,設(shè)置數(shù)據(jù)存儲的目的表信息。
如圖6所示為數(shù)據(jù)采集的流程設(shè)計(jì)圖:
2.3數(shù)據(jù)處理
2.3.1計(jì)算框架
在數(shù)據(jù)處理,選擇一個合適的計(jì)算框架尤為重要。MapReduce分而治之的解決方式非常適合分布式系統(tǒng)架構(gòu),MapReduce從HDFS中讀出數(shù)據(jù),進(jìn)行分割后執(zhí)行Map任務(wù),將Map結(jié)果進(jìn)行分區(qū)、排序、整理后傳入Reduce任務(wù),Reduce任務(wù)將最后的結(jié)果處理后再寫入到HDFS中。
在數(shù)據(jù)處理中緩存的作用也尤其重要,Memcached高速緩存服務(wù)器在此的作用也就顯得不可或缺,對于全球省份的數(shù)據(jù)計(jì)算匯總,通過緩存數(shù)據(jù)庫查詢結(jié)果,減少數(shù)據(jù)庫訪問次數(shù),提高動態(tài)Web應(yīng)用的速度、提高可擴(kuò)展性。
需要說明的是,大數(shù)據(jù)計(jì)算任務(wù)能被分割的前提條件是,待處理的數(shù)據(jù)集可以被分割成許多小的數(shù)據(jù)集,而且每個小的數(shù)據(jù)集又可以被并行處理計(jì)算,在新冠肺炎數(shù)據(jù)中,雖然我們只定義了兩個數(shù)據(jù)模型,但對于單條數(shù)據(jù)的異步執(zhí)行也可將數(shù)據(jù)分割為更小的單位進(jìn)行處理計(jì)算。
但在批量處理中,雖是按照事先設(shè)定的時間來啟動處理程序,但數(shù)據(jù)的產(chǎn)生速度也有較大的差異,如果讓數(shù)據(jù)處理系統(tǒng)持續(xù)的工作,服務(wù)器可能在某一時刻忙得不可開交,在另一個時刻可能又一直處于空閑。如何根據(jù)需要來通知MapReduce計(jì)算呢?
常用的方法是采用消息機(jī)制,消息可以理解為是一個數(shù)據(jù)結(jié)構(gòu),包含消息源、消息名、消息數(shù)據(jù)。消息系統(tǒng)的產(chǎn)品多種多樣,本文使用ActiveMQ來提供消息服務(wù)。
ActiveMQ是Apache開源系統(tǒng),是依照J(rèn)MS標(biāo)準(zhǔn)開發(fā)的。ActiveMQ的主要目標(biāo)是在盡可能多的跨平臺和跨語言上提供一個統(tǒng)一的、標(biāo)準(zhǔn)的消息驅(qū)動的應(yīng)用集成。雖然與其他系統(tǒng)相比其效率并不算高,但其高可靠性和可擴(kuò)充性依然讓它稱為非常流行的消息服務(wù)系統(tǒng)。
2.3.2數(shù)據(jù)計(jì)算
基于新冠肺炎數(shù)據(jù),數(shù)據(jù)采集部分已經(jīng)得到數(shù)據(jù)質(zhì)量相當(dāng)純凈的數(shù)據(jù),因此數(shù)據(jù)并不需要做清洗和轉(zhuǎn)換,但由于數(shù)據(jù)過于集中(此處理解為數(shù)據(jù)均為匯總數(shù)據(jù)),所以在數(shù)據(jù)庫中的數(shù)據(jù)并無法展示動態(tài)變化量。因此,要想在數(shù)據(jù)可視化階段做到對每日新增數(shù)據(jù)等數(shù)據(jù)的展示,采集的數(shù)據(jù)顯然是不能滿足的。
數(shù)據(jù)處理的目的在于對匯總數(shù)據(jù)進(jìn)行計(jì)算,得出每日新增數(shù)據(jù)。由于數(shù)據(jù)采集部分的工作,存儲在數(shù)據(jù)庫中的數(shù)據(jù)均為匯總數(shù)據(jù),通過對各個地區(qū)的每日數(shù)據(jù)分為確診、死亡、康復(fù)三類數(shù)據(jù)進(jìn)行累加即可計(jì)算出全球數(shù)據(jù)變換趨勢。如下圖所示為數(shù)據(jù)處理設(shè)計(jì)流程圖:
在此設(shè)計(jì)流程中,同樣的定義了計(jì)時器,用于設(shè)計(jì)腳本執(zhí)行周期,同時定義了源數(shù)據(jù)表(新冠肺炎數(shù)據(jù)表)以及目的表(新冠肺炎匯總表),對于數(shù)據(jù)獲取方式(迭代器)設(shè)置為增量,通過輪訓(xùn)整個表數(shù)據(jù),最后腳本將計(jì)算出相應(yīng)數(shù)據(jù)并存儲至目的表中。
1)定時器,設(shè)置清洗任務(wù)啟動方式,可以是定時(02:00)啟動,或間隔周期啟動(3600秒)。2)源數(shù)據(jù)表,設(shè)置需要清洗數(shù)據(jù)的源數(shù)據(jù)表。3)迭代器,設(shè)置數(shù)據(jù)讀取方式,可以是全表或增量方式,設(shè)置迭代器的速度等。4)數(shù)據(jù)匯總,對迭代器讀取的每一條數(shù)據(jù)進(jìn)行匯總處理,并數(shù)據(jù)匯總數(shù)據(jù)。5)目的數(shù)據(jù)表,匯總數(shù)據(jù)存儲表。
整個流程可以看作是數(shù)據(jù)倉庫的ETL過程,對數(shù)據(jù)表數(shù)據(jù)進(jìn)行抽取,然后對數(shù)據(jù)進(jìn)行轉(zhuǎn)換(統(tǒng)計(jì)過程),最后將數(shù)據(jù)加載回目的數(shù)據(jù)庫中。
綜上可根據(jù)不同用戶的需求,對數(shù)據(jù)進(jìn)行不同的處理,可針對某一個地區(qū),某一個時間,對不同的數(shù)據(jù)進(jìn)行數(shù)據(jù)的清洗、轉(zhuǎn)換,靈活的得到用戶需求的數(shù)據(jù)。
2.4數(shù)據(jù)可視化
此系統(tǒng)使用ECharts進(jìn)行可視化動圖開發(fā),ECharts依賴于輕量級的ZRender類庫,通過其內(nèi)部MVC封裝,實(shí)現(xiàn)圖形顯示、視圖渲染、動畫擴(kuò)展和交互控制等,從而為用戶提供直觀、生動、可交互、可高度個性化定制的數(shù)據(jù)可視化圖表。
最終效果可供用戶在瀏覽器中進(jìn)行動態(tài)閱覽,可視動圖將通過動畫形式讓用戶觀看,動圖日期變化的同時對應(yīng)全球新冠肺炎的地區(qū)顏色也將發(fā)生變化,不同顏色代表疫情嚴(yán)重程度。
3 結(jié)語
本文基于大數(shù)據(jù)技術(shù)設(shè)計(jì)開發(fā)了一款COVID-19動態(tài)可視化數(shù)據(jù)管理系統(tǒng),對COVID-19的動態(tài)監(jiān)控具有較為重要的現(xiàn)實(shí)意義,一方面對新冠的變化趨勢進(jìn)行展示,另一方面有利于對疫情的監(jiān)管提供了一定價值的參考意義。在此基礎(chǔ)上,本系統(tǒng)還可針對其他數(shù)據(jù)進(jìn)行類似的采集、處理、可視化展示。需要指出的是,該系統(tǒng)仍有很多不足之處,有待后續(xù)的完善。
參考文獻(xiàn)
[1]周中元,王菁.大數(shù)據(jù)挖掘技術(shù)與應(yīng)用[M].北京:電子工業(yè)出版社,2019:9 -12,37.(ZHOU Z Y,WANG J. Big data mining technology and application [M].Beijing: Publishing House of Electronics Industry, 2019:9-12,37.)
[2]劉軍.Hadoop大數(shù)據(jù)處理[M].北京:人民郵電出版社,2013:66-70,123, 128-129,138.(LIU J.Hadoop Big Data Processing[M].Beijing:Posts & Telecom Press,2013:66-70,123,128-129,138.)
[3]劉鵬,張燕,何光威.大數(shù)據(jù)可視化[M].北京:電子工業(yè)出版社,2018:166- 169.(LIU P,ZHANG Y,HE G W. Big data visualization[M].Beijing: Publishing House of Electronics Industry,2018:166-169)
[4]黑馬程序員.數(shù)據(jù)清洗[M].北京:清華大學(xué)出版社,2020:68-92,179 -192.(HEI M C X Y. Data cleaning[M].Beijing:Tsinghua University Press,2020: 68-92,179-192.)
[5]楊凡,孫力群.面向第三方支付的校園消費(fèi)大數(shù)據(jù)系統(tǒng)及其數(shù)據(jù)采集與預(yù)處理設(shè)計(jì)[J].電腦知識與技術(shù),2020:2.(YANG F,SUN L Q. Design of campus consumption big data system for third-party payment and its data collection and preprocessing[J].Computer Knowledge and Technology, 2020:2.)
[6]聞雅,高志遠(yuǎn),王吉富,蔡雨軒,高晟珍,李瑞改.基于航班數(shù)據(jù)可視化系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].智能計(jì)算機(jī)與應(yīng)用,2019(3):3-4.(WEN Y,GAO Z Y,WANG J F,CAI Y X,GAO S Z,LI R G. Design and Implementation of a Visualization System Based on Flight Data[J]. Intelligent Computer and Applications,2019: 3-4.)
[7]王兆益,周愛平.基于ECharts的數(shù)據(jù)可視化系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)與網(wǎng)絡(luò),2020:2.(WANG Z Y,ZHOU A P. Design on Data Visualization System Based on ECharts[J]. Computer and network,2020:2.)
作者簡介
蔣新,男,漢,1999年8月生,重慶榮昌人,本科,研究方向:大數(shù)據(jù)管理、數(shù)據(jù)可視化。