• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      徐州工程學院 洪保劉

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

      1 爬取網絡數(shù)據腳本

      1.1 腳本設計架構

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

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

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

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

      1.2 開發(fā)工具和運行環(huán)境

      開發(fā)工具:Python;需要安裝的Python 庫有:Requests;運行環(huán)境:Windows 操作系統(tǒng)。

      2 大數(shù)據框架處理數(shù)據

      2.1 系統(tǒng)總體設計

      2.1.1 系統(tǒng)架構設計

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

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

      2.1.3 系統(tǒng)開發(fā)工具

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

      2.2 系統(tǒng)功能模塊設計

      2.2.1 數(shù)據清洗模塊

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

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

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

      2.2.2 數(shù)據處理模塊

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

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

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

      2.2.3 業(yè)務邏輯分析

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

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

      2.2.4 數(shù)據存儲模塊

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

      3 Web 可視化平臺

      3.1 系統(tǒng)總體設計

      3.1.1 系統(tǒng)架構設計

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

      3.1.2 系統(tǒng)開發(fā)環(huán)境與運行說明

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

      系統(tǒng)運行環(huán)境要求如下:

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

      3.2 系統(tǒng)功能模塊設計

      3.2.1 前端模塊

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

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

      static 是ECharts 和頁面設計需要的靜態(tài)資源。

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

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

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

      3.2.2 后端模塊

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

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

      4 整體系統(tǒng)運行測試

      4.1 運行環(huán)境

      4.1.1 爬蟲腳本運行環(huán)境

      Python 3.10.1,使用Python 庫Requests、OS、RE、Time、JSON??缙脚_的系統(tǒng)設計,測試環(huán)境為Windows10,Centos7。

      4.1.2 大數(shù)據框架運行環(huán)境

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

      4.1.3 Web 平臺運行環(huán)境

      后端技術選型: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,運行時創(chuàng)建數(shù)據結果保存的目錄,定時每天下午六點執(zhí)行該腳本,并將結果數(shù)據保存至此目錄下。數(shù)據爬取到Windows 系統(tǒng)本地文件后,服務器上使用Lrzsz 命令下載到dachuang_2022/data 目錄下。

      4.2.2 大數(shù)據框架運行測試

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

      Hadoop 啟動后執(zhí)行Flume 配置文件file-flumehdfs.Conf 收集并清洗數(shù)據文件到HDFS 分布式文件存儲系統(tǒng)上。

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

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

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

      4.2.3 Web 平臺運行測試

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

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

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

      Service 層創(chuàng)建業(yè)務接口,編寫實現(xiàn)類調用DAO 接口方法并編寫業(yè)務邏輯。

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

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

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

      5 結論

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

      猜你喜歡
      爬蟲數(shù)據處理可視化
      利用網絡爬蟲技術驗證房地產灰犀牛之說
      基于CiteSpace的足三里穴研究可視化分析
      認知診斷缺失數(shù)據處理方法的比較:零替換、多重插補與極大似然估計法*
      心理學報(2022年4期)2022-04-12 07:38:02
      基于Power BI的油田注水運行動態(tài)分析與可視化展示
      云南化工(2021年8期)2021-12-21 06:37:54
      ILWT-EEMD數(shù)據處理的ELM滾動軸承故障診斷
      水泵技術(2021年3期)2021-08-14 02:09:20
      基于Python的網絡爬蟲和反爬蟲技術研究
      基于CGAL和OpenGL的海底地形三維可視化
      “融評”:黨媒評論的可視化創(chuàng)新
      傳媒評論(2019年4期)2019-07-13 05:49:14
      利用爬蟲技術的Geo-Gnutel la VANET流量采集
      電子測試(2018年1期)2018-04-18 11:53:04
      大數(shù)據環(huán)境下基于python的網絡爬蟲技術
      電子制作(2017年9期)2017-04-17 03:00:46
      凭祥市| 泸溪县| 竹北市| 略阳县| 长子县| 庆阳市| 芜湖市| 石门县| 浙江省| 黑河市| 南康市| 洪江市| 玉树县| 巴楚县| 吴桥县| 尼玛县| 大姚县| 巧家县| 西平县| 垦利县| 泌阳县| 乌苏市| 罗平县| 根河市| 雅安市| 开封县| 嘉黎县| 满洲里市| 清水县| 墨脱县| 崇信县| 闵行区| 泰安市| 四平市| 炎陵县| 英吉沙县| 锡林浩特市| 会同县| 渝北区| 石狮市| 泰兴市|