摘要
时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,特别是近几年来,新冠疫情出现以来,疫情防控数据分析平台当然不能排除在外。我本次开发的疫情防控数据分析平台是在实际应用和软件工程的开发原理之上,运用Python语言、爬虫技术、ECharts技术以及Spark框架进行开发,可以让用户实现在线进行浏览全国实时数据、国内实时动态、系统公告、管理个人信息等。在系统开发之前首先要进行需求分析,分析出基于ECharts+Spark的疫情防控数据分析平台的主要功能,然后设计了系统结构。整体设计包括系统的功能、系统总体结构、系统数据结构和对系统安全性进行设计;最后要对系统进行测试,还要对测试的结果进行总结和分析,为以后系统的维护提供方便,也为以后类似系统的开发提供参考和帮助。这种个性化的网络系统管理更重视相互协调和管理合作,能激发管理者的创造性和主动性,这对疫情防控数据分析平台来说非常有益。
绪 论
1.1 课题的研究背景 基于ECharts+Spark的疫情防控数据分析平台主要通过计算机网络,对所需的信息进行统一管理,方便用户随时随地浏览全国实时数据和动态,管理员可以通过数据爬取的功能快速获取全国实时数据和动态。本系统极大的促进了系统与数据库管理系统软件之间的配合,满足了绝大部分用户的需求,给用户带来了很大的便利。以现在计算机的技术的应用,使计算机成为人们使用现代发达技术的桥梁。计算机可以有效的解决信息,十分方便的获取信息,从而提高工作的效率。
1.2 课题研究目的 全球经济在快速的发展,中国更是进步飞速,这使得国内的互联网技术进入了发展的高峰时期,这让中外资本不断转向互联网这个大市场。在这个信息高度发达的现在,利用网络进行信息管理改革已经成为了人们追捧的一种趋势。“基于ECharts+Spark的疫情防控数据分析平台”是运用Python语言、爬虫技术、ECharts技术和Spark框架,以MySQL数据库为基础而发出来的。可以实现用户在线进行浏览全国实时数据和动态,并进行在线管理个人信息、浏览系统公告等。为保证我国经济的持续性发展,必须要让互联网信息时代在我国日益壮大,蓬勃发展。伴随着信息社会的飞速发展,很多管理系统所面临的问题也一个接一个的出现,所以现在最该解决的问题就是信息的实时查询和访问需求的问题,以及如何利用快捷便利的方式让访问者在广大信息系统中进行查询、分享、储存和管理。这对我们的现实生活中具有非常重要的意义,所以基于ECharts+Spark的疫情防控数据分析平台诞生了。
1.3 课题的研究意义 大数据时代已经到来,网络爬虫技术已成为这个时代不可或缺的一项技术,企业需要数据来分析用户行为、产品的不足之处以及竞争对手的信息等,而这一切的首要条件就是数据的采集。在互联网社会中,数据是无价之宝,一切皆为数据,谁拥有了大量有用的数据,谁就拥有了决策的主动权。如何有效地采集并利用这些信息成了一个巨大的挑战,而网络爬虫是自动采集数据的有效手段。网络爬虫是一种按照一定的规则,自动抓取互联网海量信息的程序或脚本。网络爬虫的应用领域很广泛,如搜索引擎、数据采集、广告过滤、大数据分析等。本次使用Python技术加网络爬虫技术和ECharts技术,可以实现管理员对全国实时数据的快速管理,对数据可视化的发展来说,是一个非常有意义的创新。
相关技术
本基于ECharts+Spark的疫情防控数据分析平台的数据库采用的是MySQL数据库,并且选择了Python语言、网络爬虫技术、ECharts技术和Spark框架进行开发项目,在项目开发过程中,实现了系统功能模块的安全性、实用性、稳定性、易维护和页面简单等特点。 2.1 Python简介 Python是由荷兰数学和计算机研究学会的吉多·范罗苏姆于20世纪90年代设计的一款高级语言。Python优雅的语法和动态类型,以及解释型语言的本质,使它成为许多领域脚本编写和快速开发应用的首选语言。Python相比与其他高级语言,开发代码量较小,代码风格简洁优雅,拥有丰富的第三方库。Python的代码风格导致其可读性好,便于维护人员阅读维护,程序更加健壮。Python能够轻松地调用其他语言编写的模块,因此也被成为“胶水语言”[3]。
Python的应用场合非常广泛,在科研领域中,可以用Python训练人工智能模型,也可以对实验数据进行数据分析。在生活中,Python提供了很多优秀的、开源的Web开发框架,例如Django、Flask、Pyramid、Tornado等。知乎、豆瓣网、Youtube等知名应用都是由Python为基础进行开发的。相比于其他框架,Django有着更加丰富的插件,作为企业级框架也很好上手,适合本次开发。此次基于ECharts+Spark的疫情防控数据分析平台是开发一个Web应用,采用Django框架,将在下一节进行具体介绍。本次开发选用的是Python3.6.4版本。
2.2 Spark框架 spark是一个用来实现快速,通用的集群计算平台 spark适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理,迭代算法,交互式查询,流处理。通过在一个统一的框架下支持这些不同的计算,spark使我们可以简单而低耗地把各种处理流程整合在一起。 1. RDD:是Resillient Distributed Dataset(弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。 2. DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系。 3. Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task。 4. Application:用户编写的Spark应用程序。 5. Task:运行在Executor上的工作单元。 6. Job:一个Job包含多个RDD及作用于相应RDD上的各种操作。 7. Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表了一组关联的、相互之间没有Shuffle依赖关系的任务组成的任务集。
2.3 网络爬虫简介 网络爬虫是一种很好的自动采集数据的通用手段。它主要分为4种类型,分别是:聚焦网络爬虫、增量抓取、表层网页、深层网页。 ①聚焦网络爬虫是“面向特定主题需求”的一种爬虫程序,而通用网络爬虫则是捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分,主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。 ②增量抓取意即针对某个站点的数据进行抓取,当网站的新增数据或者该站点的数据发生变化后,自动地抓取它新增的或者变化后的数据。 Web页面按存在方式可以分为表层网页(surface Web)和深层网页(deep Web,也称invisible Web pages或hidden Web)。 ③表层网页是指传统搜索引擎可以索引的页面,即以超链接可以到达的静态网页为主来构成的Web页面。 ④深层网页是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面。 本次使用的爬虫技术是聚焦网络爬虫,通过搜索引擎,抓取相关全国实时数据,下载到本地,形成互联网内容的镜像备份,提供用户浏览、查看。
2.4 ECharts简介 ECharts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts最初由百度团队开源,并于2018年初捐赠给Apache基金会,成为ASF孵化级项目。 ECharts框架原理:数据可视化框架原理: 1.1:ECharts是一个轻量级的 javascript 图形库, 纯 js 实现, mvc 框架, 数据驱动。 1.2: Svg 和 Canvas 是两个可以选择的类库之一,其中 svg 交互性更好,性能较弱,不适用于移动端,在绘制数万个点时会崩溃。而 canvas 的渲染速度和性能更好,echarts 在 canvas 上构建一层 MVC层,使得它可以像 svg 一样交互。 1.3:ECharts的特点:重要性和优先级依次递减,设计效果直观、生动,能够交互,可个性化定制。 1.4:ECharts总体结构是基于 MVC 架构的,各部分的主要作用是: Storage(M):模型层,实现图形数据的CURD(增删改查)管理; Painter(V): 视图层,实现canvas 元素的生命周期管理,即:视图渲染、更新控制、绘图; Handler(C):控制层,事件交互处理,实现完整的dom事件模拟封装。
2.5 MySQL简介 MySQL是一款小型关系型数据库管理系统(Relational Database Management System),开发商为瑞典MySQLAB公司。关系型数据库将数据存放在不同的表中,使数据更加规范化。MySQL因其体积小、速度快、源码开放的特点,很多网站开发都将MySQL作为首选[5]。由于Python3不再支持MySQLdb模块,此次开发采用pymysql模块连接MySQL数据库。 2.6小结 本章详细的介绍了开发基于ECharts+Spark的疫情防控数据分析平台所需要的技术与工具,工欲善其事必先利其器,对于技术和工具了解的越多越清晰,才会在开发过程中如鱼得水。
系统整体功能图
用户注册界面图
用户登录界面图
用户功能界面图
全国实时数据管理界面图
全国实时动态管理界面图
管理员功能界面图
看板界面图
部分数据库表
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
yonghuming |
varchar |
200 |
用户名 |
||
xingming |
varchar |
200 |
姓名 |
||
mima |
varchar |
200 |
密码 |
||
xingbie |
varchar |
200 |
性别 |
||
lianxidianhua |
varchar |
200 |
联系电话 |
||
touxiang |
longtext |
4294967295 |
头像 |
字段名称 |
类型 |
长度 |
字段说明 |
主键 |
默认值 |
id |
bigint |
主键 |
主键 |
||
addtime |
timestamp |
创建时间 |
CURRENT_TIMESTAMP |
||
qgqz |
int |
全国确诊 |
|||
jwsr |
int |
境外输入 |
|||
zyrs |
int |
治愈人数 |
|||
swrs |
int |
死亡人数 |
结论
本系统是采用Python语言、爬虫技术、ECharts技术、Spark框架构建的一个操作管理系统,选择的数据库是MySQL。整个过程先是通过整体的系统分析,来确定本系统的可行性是否达标。为了满足用户的需求以及提高管理员的工作效率,通过系统所要实现的功能分析,决定了用户和管理员要实现的功能。之后就是精细各个模块的具体功能,定义用户和管理员们的权限,分割成管理员功能模块和用户功能模块。之后通过系统测试来确保数据的准确性和操作的准确性,发现错误并立即做出了改正。 系统本身就是共享信息的存在,用户和管理员都可以发布信息来分享资源,通过加入关键词检索,让用户和管理员更方便的使用系统。同时通过分类以便用户查找信息可以进一步的对号入座,极大的节省了查找信息的时间。通过加入信息的评论功能,加深了用户与用户之间的交流,使其构造出更良好的网络环境。 关于基于ECharts+Spark的疫情防控数据分析平台的设计还是有很多不足的地方,在管理员模块不能更好的设置用户模块的权限,在用户模块功能略少,操作单一,缺少点赞分享等操作,影响了用户的积极性。 在本次项目设计中,完成了大大小小的模块,系统设计的调查,数据的分析,在安装软件方面,选择版本问题困扰了我很久,后来找相关的网站介绍,了解了各个版本的利与弊,最后完善了本次设计。基于ECharts+Spark的疫情防控数据分析平台的系统设计选择了Python开发工具,和MySQL数据库对前后台的数据交互进行分析保存,使用MySQL数据库可以是程序运行更加的安全且稳定,从而实现并完善系统的开发。