基于大数据+SpringBoot 技术的全国传染病数据分析可视化平台*

2023-03-24 18:31徐州工程学院洪保刘
数字技术与应用 2023年11期
关键词:爬虫数据处理可视化

徐州工程学院 洪保刘

随着互联网时代的逐步发展,越来越多的人开始关注互联网上的热点新闻、时事政治等官方权威数据,越来越多的网民也开始在互联网上发布自己的日常生活、视频评论等琐事数据。互联网产生的大量数据无法通过普通的软件工具达到分析处理的目的,大数据处理技术于是应运而生。将大量数据收集、存储在支持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的网络爬虫技术