肖建峰,郭嘉濤,湯熠
(南華大學計算機學院,湖南衡陽,421200)
隨著國際新冠病毒感染人數不斷增加,國內防疫壓力不斷增大,并且隨著秋冬季節的來臨,國內也不斷有地區出現或零星或聚集性病例。目前查找密接人員的工作主要還是靠大數據篩查和各單位登記篩查是否有密接人員。本文以美國為例,利用大數據分析將美國的疫情數據進行可視化實現疫情信息展示預測系統查詢系統。充分發揮群眾的自主能動性,每個人都可以使用該自查系統,輸入地點等信息,通過結果確認地點是否有疫情信息,起到一個防范的作用。
系統共分五大模塊,物者相輔相成,共同構成了疫情信息展示及預測系統相應功能。
全美疫情分析:對美國整體的疫情情況進行分析統計展示。
疫情查詢分析:選擇相應的地區進行疫情查詢,可以查看當地的疫情狀況。
疫情預測分析:分析預測疫情的拐點出現的時間。
疫苗接種分析:將美國的接種疫苗的數據進行分析統計展示。
疫情防控分析:將一些疫情的知識和防控措施進行展示讓用戶了解。

圖1 項目模塊圖
本系統主要分為大數據分析端,后臺邏輯端,前臺可視化端。大數據分析端是在Centos7系統中通過搭建集群,利用HDFS分布式文件系統存儲,利用spark將代碼上傳集群運行得到結果文件然后利用Sqoop將hdfs文件導入MySQL數據庫。后端則采用SpringBoot框架進行一站式服務開發,前端可視化是用Vue框架進行組件式開發。利用Echarts進行圖標的展示還用了Element,Muse-UI進行可視化設計。
本系統采用典型的分層架構。系統總體包含如下的幾層,系統整體架構圖如下圖2所示。

圖2 系統架構圖
視圖層(view):負責通過前端向用戶展示。
控制層(Controller):負責接收指定的參數并進行相應處理與計算,完成主要的業務功能。
服務層(service):負責接收指定的參數并進行相應處理與計算,完成主要的業務功能。
持久層(Dao):負責與數據庫交互,后將結果返回給服務層。
數據層:主要負責數據的持久化存儲。
(1)系統功能完善齊全,幾乎涵蓋所有疫情的信息并且各個功能點均進行了優化以及測試,算法穩定性高,系統智能化程度高部署簡單。
(2)對于疫情數據的分析挖掘使用大數據的分析框架,利用spark,Hadoop,Hbase,Hive,Sqoop等,同時在數據集方面均根據實際應用場景進行了針對性的分析收集。
(3)在疫情拐點的預測上使用機器學習與SIR傳染病模型結合技術,預測出美國美國的和美國各州的疫情拐點。
(4)提供了操作簡單、界面優美且交互簡單,以圖表的方式對疫情信息進行統計分析可視化,直觀地展示了疫情的信息,讓民眾了解疫情情況同時也對不同用戶也有不同的關注點,系統也能查看不同日期的不同地區的疫情信息,交互靈活不死板。另外特別推出的疫情防控專區也能幫助民眾了解一下疫情基本信息。
系統采取了Hadoop、Spark進行數據分析,并將分析的數據通過Sqoop與mysql數據庫進行數據傳遞。
Hadoop:Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力進行高速運算和存儲。Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱 HDFS。HDFS有高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有著超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統中的數據。Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數據提供了存儲,而MapReduce則為海量的數據提供了計算。
Spark:Apache Spark 是專為大規模數據處理而設計的快速通用的計算引擎。Spark是UC Berkeley AMP lab(加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優點;但不同于MapReduce的是——Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數據挖掘與機器學習等需要迭代的MapReduce的算法。
Sqoop:Sqoop是一款開源的工具,主要用于在Hadoop(Hive)與傳統的數據庫(mysql、postgresql)間進行數據的傳遞,可以將一個關系型數據庫(例如MySQL,Oracle,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關系型數據庫中。

圖3 大數據分析處理流程
(1)數據格式轉換
原始數據集是以.csv文件組織的,為了方便spark讀取生成RDD或者DataFrame,首先將.csv轉換為.txt格式文件。

圖4 Spark運行流程
(2)數據文件上傳HDFS
首先創建文件夾然后從本地上傳文件到Hdfs最后從Hdfs下載文件到本地。
(3)使用Spark進行數據分析

圖5 Spark on Standalone運行過程
(4)讀取文件獲取DataFrame
從HDFS讀取上傳的.txt數據文件生成DataFrame。使用的數據為結構化數據,因此可以使用spark讀取源文件生成DataFrame以方便進行后續分析實現。
(5)數據分析工作
對獲取的DataFrame進行Spark SQL操作分析數據。
統計美國的疫情情況。
統計美國各州的疫情情況。
統計美國各縣的疫情情況。
分析出每日累計確診、累計死亡、現有確診的前十個州。
統計美國各州的疫情風險等級。
統計美國的疫情疫苗接種情況。
在疫情的拐點的預測上利用了機器學習與SIR傳染病模型結合的方法,SIR模型是在1927年由兩位傳染病學家A.G.McKendric和W.O.Kenmack提出的。SIR模型是最經典的傳染病模型之一,主要用來預測疫情發生后不同時刻的未感染人數、感染人數和康復人數。在疫情發生時,隨著感染者在一定區域范圍內的移動,與未感染者接觸,就會將未感染者感染為感染者。同時,感染者也會不斷康復,最終變為康復者。康復者因為身體內有了抗體以后就不會再被感染了。SIR模型就是基于對上述過程的一個數學描述。SIR模型分出三種人群,分別是:易感者(Susceptible)、感染者(Infectious)和恢復者(Recovered)。三種人群之間的變化關系。預測結果如圖6。

圖6 拐點預測結果
本文設計實現的疫情信息展示預測系統利用大數據分析疫情數據,機器學習和SIR傳染病模型預測疫情的拐點,然后搭建好web項目,使用SpringBoot進行數據傳輸,利用vue組件式開發,Echarts多樣化圖表進行數據可視化。疫情信息齊全,展示美觀清晰,系統功能好、性能高。為人們了解疫情信息提供幫助,同時能學習相關的疫情防控知識,提升人們的防疫意識。