肖建峰,郭嘉濤,湯熠
(南華大學(xué)計(jì)算機(jī)學(xué)院,湖南衡陽(yáng),421200)
隨著國(guó)際新冠病毒感染人數(shù)不斷增加,國(guó)內(nèi)防疫壓力不斷增大,并且隨著秋冬季節(jié)的來(lái)臨,國(guó)內(nèi)也不斷有地區(qū)出現(xiàn)或零星或聚集性病例。目前查找密接人員的工作主要還是靠大數(shù)據(jù)篩查和各單位登記篩查是否有密接人員。本文以美國(guó)為例,利用大數(shù)據(jù)分析將美國(guó)的疫情數(shù)據(jù)進(jìn)行可視化實(shí)現(xiàn)疫情信息展示預(yù)測(cè)系統(tǒng)查詢系統(tǒng)。充分發(fā)揮群眾的自主能動(dòng)性,每個(gè)人都可以使用該自查系統(tǒng),輸入地點(diǎn)等信息,通過(guò)結(jié)果確認(rèn)地點(diǎn)是否有疫情信息,起到一個(gè)防范的作用。
系統(tǒng)共分五大模塊,物者相輔相成,共同構(gòu)成了疫情信息展示及預(yù)測(cè)系統(tǒng)相應(yīng)功能。
全美疫情分析:對(duì)美國(guó)整體的疫情情況進(jìn)行分析統(tǒng)計(jì)展示。
疫情查詢分析:選擇相應(yīng)的地區(qū)進(jìn)行疫情查詢,可以查看當(dāng)?shù)氐囊咔闋顩r。
疫情預(yù)測(cè)分析:分析預(yù)測(cè)疫情的拐點(diǎn)出現(xiàn)的時(shí)間。
疫苗接種分析:將美國(guó)的接種疫苗的數(shù)據(jù)進(jìn)行分析統(tǒng)計(jì)展示。
疫情防控分析:將一些疫情的知識(shí)和防控措施進(jìn)行展示讓用戶了解。
圖1 項(xiàng)目模塊圖
本系統(tǒng)主要分為大數(shù)據(jù)分析端,后臺(tái)邏輯端,前臺(tái)可視化端。大數(shù)據(jù)分析端是在Centos7系統(tǒng)中通過(guò)搭建集群,利用HDFS分布式文件系統(tǒng)存儲(chǔ),利用spark將代碼上傳集群運(yùn)行得到結(jié)果文件然后利用Sqoop將hdfs文件導(dǎo)入MySQL數(shù)據(jù)庫(kù)。后端則采用SpringBoot框架進(jìn)行一站式服務(wù)開(kāi)發(fā),前端可視化是用Vue框架進(jìn)行組件式開(kāi)發(fā)。利用Echarts進(jìn)行圖標(biāo)的展示還用了Element,Muse-UI進(jìn)行可視化設(shè)計(jì)。
本系統(tǒng)采用典型的分層架構(gòu)。系統(tǒng)總體包含如下的幾層,系統(tǒng)整體架構(gòu)圖如下圖2所示。
圖2 系統(tǒng)架構(gòu)圖
視圖層(view):負(fù)責(zé)通過(guò)前端向用戶展示。
控制層(Controller):負(fù)責(zé)接收指定的參數(shù)并進(jìn)行相應(yīng)處理與計(jì)算,完成主要的業(yè)務(wù)功能。
服務(wù)層(service):負(fù)責(zé)接收指定的參數(shù)并進(jìn)行相應(yīng)處理與計(jì)算,完成主要的業(yè)務(wù)功能。
持久層(Dao):負(fù)責(zé)與數(shù)據(jù)庫(kù)交互,后將結(jié)果返回給服務(wù)層。
數(shù)據(jù)層:主要負(fù)責(zé)數(shù)據(jù)的持久化存儲(chǔ)。
(1)系統(tǒng)功能完善齊全,幾乎涵蓋所有疫情的信息并且各個(gè)功能點(diǎn)均進(jìn)行了優(yōu)化以及測(cè)試,算法穩(wěn)定性高,系統(tǒng)智能化程度高部署簡(jiǎn)單。
(2)對(duì)于疫情數(shù)據(jù)的分析挖掘使用大數(shù)據(jù)的分析框架,利用spark,Hadoop,Hbase,Hive,Sqoop等,同時(shí)在數(shù)據(jù)集方面均根據(jù)實(shí)際應(yīng)用場(chǎng)景進(jìn)行了針對(duì)性的分析收集。
(3)在疫情拐點(diǎn)的預(yù)測(cè)上使用機(jī)器學(xué)習(xí)與SIR傳染病模型結(jié)合技術(shù),預(yù)測(cè)出美國(guó)美國(guó)的和美國(guó)各州的疫情拐點(diǎn)。
(4)提供了操作簡(jiǎn)單、界面優(yōu)美且交互簡(jiǎn)單,以圖表的方式對(duì)疫情信息進(jìn)行統(tǒng)計(jì)分析可視化,直觀地展示了疫情的信息,讓民眾了解疫情情況同時(shí)也對(duì)不同用戶也有不同的關(guān)注點(diǎn),系統(tǒng)也能查看不同日期的不同地區(qū)的疫情信息,交互靈活不死板。另外特別推出的疫情防控專(zhuān)區(qū)也能幫助民眾了解一下疫情基本信息。
系統(tǒng)采取了Hadoop、Spark進(jìn)行數(shù)據(jù)分析,并將分析的數(shù)據(jù)通過(guò)Sqoop與mysql數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)傳遞。
Hadoop:Hadoop是一個(gè)由Apache基金會(huì)所開(kāi)發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開(kāi)發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運(yùn)算和存儲(chǔ)。Hadoop實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(Hadoop Distributed File System),簡(jiǎn)稱(chēng) HDFS。HDFS有高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來(lái)部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來(lái)訪問(wèn)應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(wèn)(streaming access)文件系統(tǒng)中的數(shù)據(jù)。Hadoop的框架最核心的設(shè)計(jì)就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲(chǔ),而MapReduce則為海量的數(shù)據(jù)提供了計(jì)算。
Spark:Apache Spark 是專(zhuān)為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎。Spark是UC Berkeley AMP lab(加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室)所開(kāi)源的類(lèi)Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是——Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫(xiě)HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的MapReduce的算法。
Sqoop:Sqoop是一款開(kāi)源的工具,主要用于在Hadoop(Hive)與傳統(tǒng)的數(shù)據(jù)庫(kù)(mysql、postgresql)間進(jìn)行數(shù)據(jù)的傳遞,可以將一個(gè)關(guān)系型數(shù)據(jù)庫(kù)(例如MySQL,Oracle,Postgres等)中的數(shù)據(jù)導(dǎo)進(jìn)到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導(dǎo)進(jìn)到關(guān)系型數(shù)據(jù)庫(kù)中。
圖3 大數(shù)據(jù)分析處理流程
(1)數(shù)據(jù)格式轉(zhuǎn)換
原始數(shù)據(jù)集是以.csv文件組織的,為了方便spark讀取生成RDD或者DataFrame,首先將.csv轉(zhuǎn)換為.txt格式文件。
圖4 Spark運(yùn)行流程
(2)數(shù)據(jù)文件上傳HDFS
首先創(chuàng)建文件夾然后從本地上傳文件到Hdfs最后從Hdfs下載文件到本地。
(3)使用Spark進(jìn)行數(shù)據(jù)分析
圖5 Spark on Standalone運(yùn)行過(guò)程
(4)讀取文件獲取DataFrame
從HDFS讀取上傳的.txt數(shù)據(jù)文件生成DataFrame。使用的數(shù)據(jù)為結(jié)構(gòu)化數(shù)據(jù),因此可以使用spark讀取源文件生成DataFrame以方便進(jìn)行后續(xù)分析實(shí)現(xiàn)。
(5)數(shù)據(jù)分析工作
對(duì)獲取的DataFrame進(jìn)行Spark SQL操作分析數(shù)據(jù)。
統(tǒng)計(jì)美國(guó)的疫情情況。
統(tǒng)計(jì)美國(guó)各州的疫情情況。
統(tǒng)計(jì)美國(guó)各縣的疫情情況。
分析出每日累計(jì)確診、累計(jì)死亡、現(xiàn)有確診的前十個(gè)州。
統(tǒng)計(jì)美國(guó)各州的疫情風(fēng)險(xiǎn)等級(jí)。
統(tǒng)計(jì)美國(guó)的疫情疫苗接種情況。
在疫情的拐點(diǎn)的預(yù)測(cè)上利用了機(jī)器學(xué)習(xí)與SIR傳染病模型結(jié)合的方法,SIR模型是在1927年由兩位傳染病學(xué)家A.G.McKendric和W.O.Kenmack提出的。SIR模型是最經(jīng)典的傳染病模型之一,主要用來(lái)預(yù)測(cè)疫情發(fā)生后不同時(shí)刻的未感染人數(shù)、感染人數(shù)和康復(fù)人數(shù)。在疫情發(fā)生時(shí),隨著感染者在一定區(qū)域范圍內(nèi)的移動(dòng),與未感染者接觸,就會(huì)將未感染者感染為感染者。同時(shí),感染者也會(huì)不斷康復(fù),最終變?yōu)榭祻?fù)者??祻?fù)者因?yàn)樯眢w內(nèi)有了抗體以后就不會(huì)再被感染了。SIR模型就是基于對(duì)上述過(guò)程的一個(gè)數(shù)學(xué)描述。SIR模型分出三種人群,分別是:易感者(Susceptible)、感染者(Infectious)和恢復(fù)者(Recovered)。三種人群之間的變化關(guān)系。預(yù)測(cè)結(jié)果如圖6。
圖6 拐點(diǎn)預(yù)測(cè)結(jié)果
本文設(shè)計(jì)實(shí)現(xiàn)的疫情信息展示預(yù)測(cè)系統(tǒng)利用大數(shù)據(jù)分析疫情數(shù)據(jù),機(jī)器學(xué)習(xí)和SIR傳染病模型預(yù)測(cè)疫情的拐點(diǎn),然后搭建好web項(xiàng)目,使用SpringBoot進(jìn)行數(shù)據(jù)傳輸,利用vue組件式開(kāi)發(fā),Echarts多樣化圖表進(jìn)行數(shù)據(jù)可視化。疫情信息齊全,展示美觀清晰,系統(tǒng)功能好、性能高。為人們了解疫情信息提供幫助,同時(shí)能學(xué)習(xí)相關(guān)的疫情防控知識(shí),提升人們的防疫意識(shí)。