?

基于大數據+SpringBoot 技術的全國傳染病數據分析可視化平臺*

2023-03-24 18:31徐州工程學院洪保劉
數字技術與應用 2023年11期
關鍵詞:爬蟲數據處理可視化

徐州工程學院 洪保劉

隨著互聯網時代的逐步發展,越來越多的人開始關注互聯網上的熱點新聞、時事政治等官方權威數據,越來越多的網民也開始在互聯網上發布自己的日常生活、視頻評論等瑣事數據?;ヂ摼W產生的大量數據無法通過普通的軟件工具達到分析處理的目的,大數據處理技術于是應運而生。將大量數據收集、存儲在支持PB 級別的數據庫中,通過MapReduce、Spark 等大數據計算引擎實現對大量數據的處理分析,通過數據可視化技術將處理結果以圖表形式展現在平臺上,能夠讓所有網民清晰直觀地得到了解。本文首先介紹了隨著互聯網的發展,大數據處理技術的應用越來越廣泛。然后通過Python 語言爬蟲技術獲取全國傳染病詳細數據,并通過Hadoop大數據處理技術進行收集、清洗、處理和計算,將處理結果傳輸到MySQL 數據庫中。最后,使用SpringBoot后端框架和ECharts 可視化技術展示數據。采用柱狀圖、時間線、折線圖、地圖和列表等圖表,并通過地圖顏色深淺、時間線和柱狀圖結合以及詳情按鈕等方式,展示了全國15 天的傳染病情況。這種處理數據通過可視化展示的方法,可以讓用戶更加清晰直觀地了解到相關信息。

1 爬取網絡數據腳本

1.1 腳本設計架構

為了獲取展示的數據源,在網絡上進行了查詢、篩選并最終確定了想要爬取的數據來源網站,確定爬蟲目標之后,開始本腳本的編寫。

本腳本分為三部分:獲取源數據、提取數據和保存數據。第一部分使用Requests 模塊模擬瀏覽器訪問源數據所在的網址,獲取源代碼;第二部分使用RE 模塊提取源代碼中的源數據,并轉換為JSON 格式;第三部分使用OS 模塊將源數據以結構化的TXT 格式文本保存至本地磁盤。

腳本設計完成之后,為了每天都能爬到該網站的實時更新數據,于是在Windows 上采用定時任務計劃程序[1],定于每天下午6 點執行本腳本。

爬蟲結果數據保存到本地文件后并不是最終的結果,因為我們還需要使用大數據技術框架Hadoop 對數據進行處理[2],而在Windows 系統上目前還不支持安裝Hadoop,所以我們還需要將本地文件通過Linux 系統上的Lrzsz 技術上傳到服務器中。

1.2 開發工具和運行環境

開發工具:Python;需要安裝的Python 庫有:Requests;運行環境:Windows 操作系統。

2 大數據框架處理數據

2.1 系統總體設計

2.1.1 系統架構設計

承接爬蟲腳本獲取網絡數據到服務器后,平臺的開發就來到了第二階段,即大數據開發系統,本系統是整個數據可視化平臺開發過程中最為關鍵也最為重要的一環,對于大量數據的處理,其處理能力及結果直接影響了可視化數據的準確性和穩定性,當前主流的數據處理技術如MySQL 已無法滿足大量數據的業務需求,于是本開發系統選擇了大數據技術框架,即Hadoop。本系統分為三個模塊,分別為數據清洗模塊、數據處理模塊和數據存儲模塊。

2.1.2 系統架構介紹本系統的開發架構選擇了Hadoop 生態系統,其中Flume 作為日志收集系統負責收集爬蟲腳本獲取到的數據文件并對其進行清洗過濾[3];HDFS 分布式文件存儲系統負責存儲數據[4];Hive 數據庫工具負責分析處理數據[5];Sqoop 負責將處理后的結果數據遷移到MySQL 數據庫。Hadoop 作為分布式計算平臺,經過十幾年的發展其處理海量數據的能力已超越了市場中其他技術,且普通用戶可以使用極低成本在自己的PC 機上搭建Hadoop 集群。

2.1.3 系統開發工具

根據系統的功能要求和架構設計,系統選定遠程服務器的操作系統為Linux 并在阿里云購買了云服務器,利用Xshell 與遠程服務器連接。

2.2 系統功能模塊設計

2.2.1 數據清洗模塊

數據清洗模塊主要用于將Python 爬蟲獲得的原始數據文件通過Flume 進行數據的收集、清洗并上傳到HDFS 分布式文件存儲系統中。由于爬蟲獲得的數據是第三方網站服務器提供的數據,還無法通過大數據處理技術來處理,所以使用Flume 來將原始數據進行清洗過濾一些不需要的數據,然后上傳到HDFS 等待Hive 來進行真正的數據處理。

數據清洗的技術選型有很多,比如Flume 中收集過程中自定義的Interceptor 攔截器、或是數據上傳到HDFS過后編寫的Mapreduce、或是第三方ETL 技術軟件如Kettle 等,都可以對數據進行清洗過濾。本系統選擇了Flume 自定義攔截器Interceptor。

Flume 在收集數據時,由于爬蟲結果保存在了服務器上的統一目錄下,于是采用了Spooldir 類型的Source收集目錄下的所有數據文件。在數據到達File Channel之前,自定義Interceptor 攔截器對每個數據文件進行清洗過濾,最后再到達HDFS Sink,將數據保存到HDFS分布式文件存儲系統中。

2.2.2 數據處理模塊

數據處理模塊主要使用Hive 數據庫工具對清洗后數據進行處理分析,Hive 數據庫工具能將結構化的數據文件映射為一張數據庫表,并提供SQL 查詢功能,能將SQL 語句轉化為MapReduce 任務來執行。Hive 的優點是學習成本低,可以通過類似SQL 語句實現快速MapReduce 統計,使MapReduce 變得更加簡單,而不必開發專門的MapReduce應用程序。Hive 十分適合對數據倉庫進行統計分析。

由于Hive 默認的底層計算引擎使用的是MapReduce,而MapReduce 進行數據迭代時需要經過落盤到系統磁盤上,這使得計算速度降低了許多,所以本系統使用TEZ--數據迭代在內存上進行,大大減少了IO 落盤的時間消耗。

Hive 數據處理分為三層:ODS 原始數據層、DWD 數據處理層、ADS 結果數據層。ODS 原始數據層存放的是Flume 收集清洗完成后保存在HDFS 上的數據,通過Hive的Load Data 命令保存在這一層;DWD 數據處理層存放的是處理業務需求時創建的中間數據表,將ODS 層的數據表進行了處理分析,為結果數據的完成創建做中間處理;ODS 結果數據層存放的是完成業務需求后的結果表,緊接著結果表數據將通過數據存儲模塊進入MySQL 數據庫。

2.2.3 業務邏輯分析

為滿足全國傳染病數據展示的全面性,本系統提出了三個業務需求,具體分析過程如下。

業務需求1:每日全國各項總數據。首先,ods_total 表存儲每日各省份的各項數據;其次,dwd_total 表對每日的各項數據進行分組求和;最后,ads_total 表取消每日的分組依據,為數據存儲模塊做準備。業務需求2:當前日最新各省份各項數據。根據最新日期對ods_total 表進行過濾,取出dt='最新日期'的各省份各項數據。業務需求3:每日各省份總確診數。根據Provinces 字段不為空對ods_total表進行過濾,取出每日各省份中第一行數據,即各省份總數據,最后篩選字段為confirmed_cases(總確診數)的數據。

2.2.4 數據存儲模塊

數據存儲模塊主要用于將Hive 數據庫工具中的結果數據表數據通過Sqoop 數據遷移工具遷移到MySQL數據庫中。Sqoop 主要用于在Hadoop 與傳統數據庫如MySQL 間進行數據的傳遞,Sqoop 專為大數據批量傳輸設計,能夠分割數據集并創建Maptask 任務來處理每個區塊。Sqoop 在傳輸Hive 數據到MySQL 時,需要在MySQL 中提前創建與Hive 中對應表的表結構一樣的空表,之后才可使用Sqoop 命令進行傳輸,且需要指定MySQL 數據庫地址與Hive 在HDFS 上的地址。最終存儲到MySQL 數據庫的表。Day_province 表存儲的是每日各省份的總確診數;TotalCases 表存儲的是每日全國總數據(總確診數、總疑似數、總治愈數、總死亡數);Province_city 表存儲的是當前日實時最新的各省份總數據。

3 Web 可視化平臺

3.1 系統總體設計

3.1.1 系統架構設計

本平臺由兩個模塊實現,分別為Web 前端模塊和Web后端模塊。Web 前端模塊負責設計渲染網站UI 界面和訪問后端API 接口獲取數據,Web 后端模塊負責連接數據庫提取數據并創建API 接口提供數據給前端。

3.1.2 系統開發環境與運行說明

系統在Windows 平臺下采用Idea 作為Ide 使用Java 進行開發,平臺主體使用SpringBoot 作為后端框架,ECharts作為前端可視化技術,采用MySQL 作為數據庫。

系統運行環境要求如下:

(1).Java8;(2).SpringBoot 框架:SpringMVC、.Spring 和.Mybatis;(3).MySQL 的Server 端在默認端口運行;(4).ECharts。

3.2 系統功能模塊設計

3.2.1 前端模塊

前端模塊是用戶訪問本平臺時第一眼看到的可視化UI 界面設計,直接決定了圖表數據展示效果的好壞,通過前端基本技術HTML+CSS+JS 渲染界面,再由ECharts+Ajax 技術訪問后端模塊提供的接口獲取數據并設計圖表展示。

/templates/index.html 是ECharts 界面設計的主頁。

static 是ECharts 和頁面設計需要的靜態資源。

Controller 包是Ajax 訪問的API 接口,此類通過訪問后端模塊的API 接口獲取數據庫數據。

Entity 包是數據承載的實體類,數據成為實體類后再通過FastJson 轉換為前端需要的JSON 格式數據。

ECharts 是一款基于JavaScript 的數據可視化圖表庫,提供直觀、生動、可交互、可個性化定制的數據可視化圖表。

3.2.2 后端模塊

后端模塊采用的是SpringBoot 框架,SpringBoot 是Spring 家族中的一個全新框架,用來簡化Spring 程序的創建和開發過程。在以往我們通過SpringMVC+Spring+MyBatis 框架進行開發的時候,需要配置Web.XML,Spring 配置,MyBatis 配置,然后整合在一起,而Spring Boot 拋棄了繁瑣的XML 配置過程,采用大量默認的配置來簡化我們的Spring 開發過程。

SpringBoot 化繁為簡,使開發變得更加的簡單迅速。在SpringBoot 框架中,Controller 層是與前端進行交互,提供API 接口給前端獲取數據的控制層;Service 層是處理業務邏輯、調用持久化方法的服務層;DAO 層是與數據庫交互的持久化層。通過編寫Mapper 映射文件SQL語句訪問數據庫;Application.yml 是配置主程序的接口、Mapper 映射文件的路徑以及數據庫的連接信息等。

4 整體系統運行測試

4.1 運行環境

4.1.1 爬蟲腳本運行環境

Python 3.10.1,使用Python 庫Requests、OS、RE、Time、JSON??缙脚_的系統設計,測試環境為Windows10,Centos7。

4.1.2 大數據框架運行環境

Flume-1.7.0、Hadoop-2.7.2、Hive-1.2.1、Sqoop-1.4.6、Tez-0.9.1、MySQL-5.5.47。系統安裝運行在服務器上,服務器版本為Centos7。

4.1.3 Web 平臺運行環境

后端技術選型:Java8、SpringBoot-2.2.2、MyBatis-1.3.0、MySQL-5.5.47。

前端技術選型:Html、CSS、JavasCript、jQuery-3.6.0、Ajax、ECharts。

4.2 運行過程

4.2.1 爬蟲腳本運行測試

腳本使用Python 運行get_yq_info_txt.py,運行時創建數據結果保存的目錄,定時每天下午六點執行該腳本,并將結果數據保存至此目錄下。數據爬取到Windows 系統本地文件后,服務器上使用Lrzsz 命令下載到dachuang_2022/data 目錄下。

4.2.2 大數據框架運行測試

本框架首先啟動Hadoop,使用Hadoop 安裝目錄下的/sbin 目錄下的start-all.sh 命令。

Hadoop 啟動后執行Flume 配置文件file-flumehdfs.Conf 收集并清洗數據文件到HDFS 分布式文件存儲系統上。

啟動Hive 提取HDFS 上的數據映射成ODS 層原始數據表。

Hive 再通過編寫HQL 語句對原始數據表進行處理分析,得到結果數據表。

Hive 最終處理完成的結果數據表再通過Sqoop 遷移數據到MySQL。

4.2.3 Web 平臺運行測試

數據遷移到MySQL 數據庫后,進入Web 平臺設計模塊。

首先配置SpringBoot 的pom.xml 導入MyBatis,SpringBoot 相關依賴;其次配置Application.yml。

DAO 層創建持久化接口,編寫Mapper 映射文件指定接口路徑并訪問數據庫。

Service 層創建業務接口,編寫實現類調用DAO 接口方法并編寫業務邏輯。

Controller 層創建控制接口,編寫方法指定映射地址并調用Service 接口方法獲取數據,將數據以JSON 格式傳遞。

接下來進入Web 前端模塊,首先配置前端技術所需的JS 文件,然后創建HTML 文件渲染設計UI 界面,使用Ajax 調用后端Controller 接口獲取數據,并由ECharts 實現可視化。

我們通過大數據處理計算每日數據并與昨日數據進行對比,通過Ajax 技術獲取后端結果數據,動態更新各項指標的每日數據,清晰反映每日數據變化。ECharts采用時間線、直方圖、折線圖、表格等形式,直觀地說明傳染病在不同地區的數據變化情況。此外,我們使用ECharts 繪制地圖功能,通過不同省份確診人數的大小來體現地區顏色的深淺,能夠直觀感受全國傳染病的分布情況。

5 結論

全國傳染病數據具有海量性、無規則性,也是未來互聯網數據將面臨的現狀,大數據處理技術正是為解決分析這類數據而生,其不僅具有高效率、低成本、高擴容、高容錯性的框架體系,同時具有支持存儲PB 級別的數據庫存儲和分布式存儲大量數據的分布式文件系統,以及并行計算與運行的處理框架。大數據技術處理分析后的數據結果最后存儲在了關系型數據庫中,這讓Web可視化平臺的搭建簡單了許多,只需要從數據庫中提取結果數據并通過可視化技術在平臺上展示出來,便可以讓所有的網民看到全國傳染病的多方面分析、多圖表展示。大數據可視化擁有其海量數據的分析處理和可視化圖表的高可讀性兩大優點,讓傳染病狀況變得明了清晰,讓防護工作可以更有效地開展,讓居民對傳染病的嚴重性有更高的認識,對全國傳染病的把握控制有著至關重要的作用。

猜你喜歡
爬蟲數據處理可視化
利用網絡爬蟲技術驗證房地產灰犀牛之說
基于CiteSpace的足三里穴研究可視化分析
認知診斷缺失數據處理方法的比較:零替換、多重插補與極大似然估計法*
基于Power BI的油田注水運行動態分析與可視化展示
ILWT-EEMD數據處理的ELM滾動軸承故障診斷
基于Python的網絡爬蟲和反爬蟲技術研究
基于CGAL和OpenGL的海底地形三維可視化
“融評”:黨媒評論的可視化創新
利用爬蟲技術的Geo-Gnutel la VANET流量采集
大數據環境下基于python的網絡爬蟲技術
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合